Sélection de valeurs distinctes à partir de plusieurs colonnes dans MySQL
Lorsque vous travaillez avec des bases de données, il est souvent nécessaire de récupérer des combinaisons uniques de valeurs à partir de plusieurs colonnes. Cependant, l'utilisation du mot-clé DISTINCT ne donne pas toujours les résultats souhaités. Cet article explore une approche alternative pour sélectionner des valeurs distinctes à partir de deux colonnes dans une base de données MySQL.
Considérez la table suivante nommée "foo_bar" :
foo | bar |
---|---|
a | c |
c | f |
d | a |
c | a |
f | c |
a | c |
d | a |
a | c |
c | a |
f | c |
Interrogation de cette table avec l'instruction SQL suivante :
<code class="sql">SELECT DISTINCT foo, bar FROM foo_bar;</code>
produit le résultat suivant :
foo | bar |
---|---|
a | c |
c | f |
d | a |
c | a |
f | c |
Bien que cette requête garantisse qu'une seule instance de chaque combinaison de valeurs unique est renvoyée, elle n'élimine pas les redondances où les valeurs sont intervertis dans les deux colonnes. Par exemple, « a c » et « c a » sont des combinaisons distinctes, mais elles font référence aux mêmes données.
Pour résoudre ce problème, nous pouvons utiliser la clause GROUP BY à la place :
<code class="sql">SELECT foo, bar FROM foo_bar GROUP BY foo, bar;</code>
Cette requête renvoie le résultat suivant :
foo | bar |
---|---|
a | c |
c | f |
d | a |
Comme vous pouvez le voir, la clause GROUP BY combine toutes les lignes en double en une seule ligne, éliminant efficacement les répétitions et fournissant des combinaisons de valeurs vraiment distinctes des deux colonnes foo et bar.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!