Comparer deux colonnes
kravop
Messages postés
95
Statut
Membre
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
J'aimerais comparer deux colonnes d'une même table sous sql
Voilà la table :
NumExp | NumDes |
1 | 2 |
1 | 3 |
4 | 1 |
2 | 1 |
J'aimerais savoir avec qui la personne 1 a eu des conversation
Donc ici le resultat devrait être : 2,3,4
Du coup il faudrait que je fasse une requète SQL qui compare les deux colonnes puis qui enlève les doublons mais je ne vois pas du tout comment faire.
J'aimerais comparer deux colonnes d'une même table sous sql
Voilà la table :
NumExp | NumDes |
1 | 2 |
1 | 3 |
4 | 1 |
2 | 1 |
J'aimerais savoir avec qui la personne 1 a eu des conversation
Donc ici le resultat devrait être : 2,3,4
Du coup il faudrait que je fasse une requète SQL qui compare les deux colonnes puis qui enlève les doublons mais je ne vois pas du tout comment faire.
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonsoir, moi je ferais:(select NumExp as NumCorrespondant from conversation where NumDes = 1) union (select NumDes from conversation where NumExp = 1) order by NumCorrespondant
-
Bonjour,
On peut aussi utiliser un OR ou un IN, cela simplifie la requête mais complexifie la clause SELECT pour filtrer la bonne colonne :SELECT DISTINCT CASE WHEN NumDes = 1 THEN NumExp ELSE NumDes END AS NumCorrespondant FROM conversation WHERE NumExp = 1 OR NumDes = 1
SELECT DISTINCT CASE WHEN NumDes = 1 THEN NumExp ELSE NumDes END AS NumCorrespondant FROM conversation WHERE 1 IN (NumExp, NumDes)
À noter que selon les indexes posés, ces différentes méthodes pourront avoir des perfs différentes. À tester. (Je ne connais pas assez bien le moteur MySQL pour te dire laquelle sera la plus rapide. Je sais que sous SQL Server par exemple, le UNION de yg_be sera plus efficace que le OR si NumDes et NumExp sont indexés)
Xavier
-
-
Avec un WHERE NumExp=NumDes peut être ?