从多个表中进行选择时,由于链接列中的值匹配,经常会遇到重复行。在这种情况下,您可能需要消除这些重复项,同时保留特定信息。
问题陈述:
以下查询从“drinks”和“drinks_photos”中检索信息" 表格:
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id
但是,对于每种饮料,会出现多个照片条目,从而导致重复的行。目标是消除这些重复项并获取包含与每种饮料相关的名称、价格和所有照片的唯一行。
解决方案:
要解决此问题,为了保持数据完整性,我们可以在查询中使用分组和聚合函数。
分组和聚合函数:
在这种情况下,我们可以按“drinks_id”列进行分组,以获得每种饮料的唯一行。
SQL 查询:
要为每种饮料获取单行并保留所有照片条目,我们可以使用以下命令query:
SELECT name, price, GROUP_CONCAT(photo SEPARATOR ',') AS all_photos FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
结果:
此查询返回以下结果:
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 |
说明:
注意:
以上是MySQL从多个表中选择时如何消除重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!