mysql - 具有大量 LEFT JOINS 的 SQL 查询

标签 mysql sql left-join group-concat

我正在尝试组合一个查询,但结果不是我所期望的,

select pii.id, pii.name, pii.sku, group_concat(pic.id) category_ids, group_concat(pimg.id) as modifier_group_ids  
from items as pii
left join category_item as pici on pii.id = pici.item_id
left join categories as pic on pici.category_id = pic.id
left join item_modifier_group as piimg on pii.id = piimg.item_id
left join modifier_groups as pimg on piimg.modifier_group_id = pimg.id
where pii.account_id = 728
group by pii.id;

结果是这样的,第 4 列 (category_ids) 与重复值分组。

id     |name                        |sku |category_ids            |modifier_group_ids |
-------|----------------------------|----|------------------------|-------------------|
336937 |Chicken Pullets             |    |12981                   |                   |
336938 |Hats                        |    |12965                   |                   |
336939 |Jack Fruit Taco Salad       |    |12975,12975,12975       |57,58,60           |
336940 |Vegatarian Taco Salad       |    |12975,12975,12975       |58,60,57           |
336941 |Pulled Pork Taco Salad      |    |12975,12975,12975       |58,57,60           |
336942 |Ground Beef Taco Salad      |    |12975,12975,12975       |60,57,58           |
336943 |Steak Taco Salad            |    |12975,12975,12975       |57,58,60           |
336944 |Chicken Taco Salad          |    |12975,12975,12975       |60,58,57           |
336945 |Jack Fruit Quesadilla       |    |12976,12976,12976,12976 |58,60,57,56        |

最佳答案

您的查询看起来不错,大部分重复项都与 JOIN 一起出现。尝试在 group_concat() 中使用 distinct,如下所示。

group_concat(distinct pic.id) category_ids,

关于mysql - 具有大量 LEFT JOINS 的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000202/

相关文章:

sql - 比较具有大量数据的两组以找到相同的值

sql - MySQL 服务器已消失错误

mysql - MySQL 中的左外连接

SQL - 左连接后丢失列

php - Woocommerce 使用产品 SKU 获取产品 ID

php - 尝试获取非对象的属性(CodeIgniter)

php - 在 IF 语句中更新数据库

mysql - 从日志重新创建 MySQL 数据库

sql - MySQL计数问题

java - 使用 JPA/Hibernate 过滤 DataSet 中的行