Dilemme MySQL "SELECT DISTINCT"
Dans la gestion de base de données MySQL, "SELECT DISTINCT" est un modificateur de requête utilisé pour éliminer les lignes en double du ensemble de résultats. Cependant, un problème courant survient lorsque vous essayez de sélectionner tous les champs d'une table avec les valeurs distinctes.
La requête SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id récupère efficacement uniquement les valeurs uniques ticket_id. Cependant, lors de l'extension de la requête à SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id, une erreur se produit en raison du placement incorrect de "DISTINCT."
La syntaxe correcte
"DISTINCT" doit être positionné immédiatement après "SELECT" dans l'instruction de requête. Voici la syntaxe correcte :
SELECT DISTINCT ticket_id, OTHER_COLUMN1, OTHER_COLUMN2, ... FROM temp_tickets ORDER BY ticket_id
Dans cette syntaxe, "DISTINCT" s'applique à toutes les colonnes répertoriées dans la liste de sélection, y compris les colonnes utilisées pour le tri (ORDER BY). Par conséquent, la requête renverra une ligne distincte pour chaque combinaison unique de valeurs dans les colonnes répertoriées.
Explication logique
"DISTINCT" élimine les lignes en double si toutes les colonnes de la liste de sélection a des valeurs identiques. Cela signifie que si une autre colonne contient une valeur différente, la ligne sera considérée comme unique et incluse dans le jeu de résultats.
Dans la syntaxe incorrecte SELECT foo, DISTINCT ticket_id FROM table..., la requête est ambiguë car on ne sait pas comment déterminer quelles lignes doivent être éliminées. S'il existe trois valeurs distinctes pour ticket_id et six valeurs distinctes pour foo, il n'est pas clair quelles trois valeurs de foo doivent être affichées à côté des valeurs ticket_id distinctes. En plaçant « DISTINCT » immédiatement après « SELECT », la requête devient claire et élimine toute ambiguïté.
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!