MySQL: Ignorer une colonne sélectionnée lors de l'utilisation de DISTINCT
Disons:
- Je veux requête colA, colb ne et colC dans ma table.
- Je veux voir des valeurs DISTINCTES mais je ne veux pas colA pour être un des critères de distinction.
- Omettant colA n'est pas une option.
Quelle est la meilleure façon de structurer cette requête?
stackoverflow.com/questions/1918556/... double Possible.
OriginalL'auteur DrANoel | 2010-05-26
Vous devez vous connecter pour publier un commentaire.
Il y a deux cas ici. Disons que vous avez les données
Prendre différentes valeurs de A, B, donne seulement un résultat (a,b), avec les deux valeurs de la colonne C.
Donc la question c'est voulez-vous voir de toutes les valeurs de C ou juste une seule valeur pour chaque valeur distincte de colonnes de A et de B?
Si vous voulez voir qu'une seule valeur de C, alors vous pouvez écrire
D'autre part, si vous voulez voir toutes les valeurs de C puis
que vous donne. Cette dernière alternative est nécessaire si il y a d'autres colonnes dans le tableau.
Si il n'y a pas d'autres colonnes, puis c'est la même chose, mais comme la réponse dit "Cette dernière alternative est nécessaire si il y a d'autres colonnes dans la table".
Je ne comprends pas comment SÉLECTIONNER DISTINCTS A,B,C ne fonctionne pas si il y a des colonnes supplémentaires.
OriginalL'auteur mdma
Je ne sais pas la syntaxe pour une table temporaire, afin de pseudo s'il vous plaît =)
Espère que cette aide.
La Jointure Interne va correspondre à toutes les lignes qui contiennent à la fois des valeurs de la colonne, et pas d'autres.
Oui, mais toutes les lignes dans SomeTable (correspondant au prédicat, si il y en a un) leurs (colb ne, ColC) paires dans le @table Temp.
Ahh, je vois. Tu veux dire quand une particulière ColA valeur pourrait ne pas être voulu? Va ajouter un prédicat de second select.
Non, ce n'est pas ce que je veux dire. Je veux dire, même sans les prédicats à deux états, vous ne faites pas ce que l'OP voulait. La jointure interne avec @Temp est inutile - vous trouver l'entrée correspondante dans @Temp pour chaque entrée dans SomeTable. Il y aura toujours exactement une telle ligne. En tant que tel, votre jointure n'est pas l'accomplissement de quelque chose - vous êtes simplement en ajoutant redondant colonnes à SomeTable et puis les jeter.
OriginalL'auteur Immersive