Maison >base de données >tutoriel mysql >Comment éliminer les lignes en double lors de la sélection parmi plusieurs tables dans MySQL ?
Lors de la sélection parmi plusieurs tables, il est courant de rencontrer des lignes en double en raison de valeurs correspondantes dans la colonne de liaison. Dans ce scénario, vous devrez peut-être éliminer ces doublons tout en conservant des informations spécifiques.
Énoncé du problème :
La requête suivante récupère les informations des "drinks" et "drinks_photos " tables :
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id
Cependant, pour chaque boisson, plusieurs entrées de photos apparaissent, ce qui entraîne des lignes en double. L'objectif est d'éliminer ces doublons et d'obtenir des lignes uniques contenant le nom, le prix et toutes les photos associées à chaque boisson.
Solution :
Pour résoudre ce problème et maintenir l'intégrité des données, nous pouvons utiliser des fonctions de regroupement et d'agrégation dans notre requête.
Regroupement et agrégation Fonctions :
Dans ce cas, nous pouvons regrouper par colonne "drinks_id" pour obtenir des lignes uniques pour chaque boisson.
Requête SQL :
Pour obtenir une seule ligne pour chaque boisson et conserver toutes les entrées de photos, nous pouvons utiliser ce qui suit query:
SELECT name, price, GROUP_CONCAT(photo SEPARATOR ',') AS all_photos FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
Résultat :
Cette requête renvoie ce qui suit résultat :
name | price | all_photos |
---|---|---|
fanta | 5 | ./images/fanta-1.jpg,./images/fanta-2.jpg,./images/fanta-3.jpg |
dew | 4 | ./images/dew-1.jpg,./images/dew-2.jpg |
Explication :
Remarque :
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!