Comment obtenir les mêmes résultats sans utiliser distincts dans la requête
J'ai une table avec des données comme suit:
[ID, Name]
1, Bob
1, Joe
1, Joe
1, Bob
Je veux récupérer une liste d'enregistrements montrant la relation entre les enregistrements avec le même ID.
Par exemple, je veux la suite de ma requête:
Bob, Joe
Joe, Bob
Bob, Bob
Joe, Joe
Cela me montre le "de" et "pour" pour chaque élément dans le tableau.
Je peux obtenir ce résultat en utilisant la requête suivante:
SELECT DISTINCT [NAME]
FROM TABLE A
INNER JOIN TABLE B ON A.ID = B.ID
Est-il de toute façon pour moi d'obtenir le même résultat sans l'utilisation de "distinct" dans l'instruction select? Si je ne comprend pas le distinct, je serai de retour 16 dossiers, pas 4.
Une raison particulière DISTINCTE ne doit pas être utilisé?
C'est un problème que j'ai avec un plus grand requête qui prend plus de 2,5 minutes pour s'exécuter. Je suis en train d'essayer de se débarrasser de l'extérieur au niveau distinct sur cette requête dans l'espoir qu'il permettra d'améliorer les performances et ce n'est qu'une simple illustration du concept.
Juste pour être clair, vous pouvez poster le schéma/données de l'échantillon pour le Tableau A/B indiqué dans votre requête?
Ainsi, pour l'exemple ici, le schéma et les données de l'exemple est exactement comme je l'ai posté ci-dessus. Deux colonnes, l'une appelée ID, l'autre appelé "Nom", avec les données comme indiqué ci-dessus.
Droit, mais pour moi, on dirait que vous êtes soit de rejoindre la table pour lui-même ou que vous avez deux tables (pour cet exemple) le même schéma, et je voulais juste voir qui c'était.
C'est un problème que j'ai avec un plus grand requête qui prend plus de 2,5 minutes pour s'exécuter. Je suis en train d'essayer de se débarrasser de l'extérieur au niveau distinct sur cette requête dans l'espoir qu'il permettra d'améliorer les performances et ce n'est qu'une simple illustration du concept.
Juste pour être clair, vous pouvez poster le schéma/données de l'échantillon pour le Tableau A/B indiqué dans votre requête?
Ainsi, pour l'exemple ici, le schéma et les données de l'exemple est exactement comme je l'ai posté ci-dessus. Deux colonnes, l'une appelée ID, l'autre appelé "Nom", avec les données comme indiqué ci-dessus.
Droit, mais pour moi, on dirait que vous êtes soit de rejoindre la table pour lui-même ou que vous avez deux tables (pour cet exemple) le même schéma, et je voulais juste voir qui c'était.
OriginalL'auteur Amanda Kitson | 2011-08-16
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle vous obtenez des lignes en double sans DISTINCTE est parce que chaque rangée de ID = x sera joint avec chaque autre ligne avec l'ID = x. Depuis la table d'origine a (1, "Bob") à deux reprises, à la fois de ceux qui vont être joint à chaque ligne dans une autre table avec l'ID = 1.
En supprimant les doublons avant de faire une jointure va faire deux choses: diminuer le temps d'exécuter la requête et d'éviter les doublons de lignes dans le résultat.
Quelque chose comme (à l'aide de MySQL version de SQL):
Edit: B est un alias de table?
OriginalL'auteur Matt Fenwick
En SQL et MY SQL
OriginalL'auteur Geek
Avez-vous essayé d'utiliser un
group by
clause?Qui devrait vous obtenez la même chose que votre
distinct
requête ci-dessus. Comme pour l'ensemble de résultats que vous le souhaitez, une simple jointure réflexive devrait le faire:OriginalL'auteur
Éliminant le dédoublement des valeurs de l'union sans l'aide distinctes
Pour plus d'suppléant de bien vouloir visiter mon blog
http://www.w3hattrick.com/2016/05/getting-distinct-rows-or-value-using.html
OriginalL'auteur pooranendu patel