Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi MySQL \'SELECT DISTINCT\' provoque-t-il des erreurs lors de la sélection de tous les champs ?

Patricia Arquette
Libérer: 2024-11-03 19:11:29
original
936 Les gens l'ont consulté

Why Does MySQL

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal