8
votes

Mysql: ignorer une colonne sélectionnée lors de l'utilisation distincte

Disons:

  1. Je veux interroger Cola, Colb et Colc dans ma table.

  2. Je veux voir des valeurs distinctes mais je ne veux pas que Cola soit un critère de distinction.

  3. omettez Cola n'est pas une option.

    Quel est le meilleur moyen de structurer cette requête?


3 Réponses :


0
votes

Je ne connais pas la syntaxe pour une table temporaire, donc pseudocode si vous s'il vous plaît =) xxx

espérons que cela aide.


5 commentaires

Cela ne produirait-il pas simplement une copie de la personne? La join interne correspondra exactement à une rangée dans @temp.


La jointure interne correspondra à toutes les lignes contenant les valeurs de colonne et aucune autre.


Oui, mais toutes les lignes de la fois (correspondant au prédicat, s'il y en a une) ait un) avoir leurs paires (colb, Colc) dans la table @temp.


Ahh je vois. Vous voulez dire quand une valeur de cola particulière pourrait ne pas être recherchée? Ajoutera un prédicat à la deuxième sélection.


Non, ce n'est pas ce que je veux dire. Je veux dire même sans prédicats dans les deux déclarations, vous ne faites pas ce que l'op voulait. La jointure interne avec @temp est inutile - vous trouvez l'entrée correspondante dans @temp pour chaque entrée de la fois. Il y aura toujours exactement une de ces rangées. En tant que tel, votre jointure n'aboutit rien - vous ne faites que ajouter des colonnes supplémentaires redondantes à la fois, puis de les jeter.



12
votes

Il y a deux cas ici. Disons que vous avez les données xxx

prenant des valeurs distinctes d'A, B ne donne qu'un seul résultat (A, B), avec deux valeurs pour la colonne C. La question est donc de savoir que vous voulez voir toutes les valeurs de C ou une seule valeur pour chaque valeur distincte des colonnes A et B?

Si vous voulez voir une seule valeur de C, vous pouvez écrire xxx

d'autre part, si vous voulez voir toutes les valeurs pour C alors xxx

vous donne ça. Cette dernière alternative est nécessaire s'il y a d'autres colonnes dans la table.


3 commentaires

La première option a l'air bien, mais le second n'est pas équivalent à sélectionner A, B, C?


@Keith - S'il n'y a pas d'autres colonnes, c'est la même chose, mais comme la réponse indique "cette dernière alternative est nécessaire s'il y a d'autres colonnes dans la table".


Je ne comprends pas comment sélectionner Distinct A, B, C ne fonctionne pas s'il y a des colonnes supplémentaires.



-1
votes

Essayez la structure ci-dessous xxx

espère que cela aide


1 commentaires

Ce n'est pas une syntaxe SQL valide.