有没有什么方法可以使用sum
中的group_concat
屈服点或解决问题?
我有以下查询,它返回item_id
和items.title
字段的冗余结果:
SELECT
item_id, sum(qty), items.title, units.title
FROM invoice_items
LEFT JOIN items
ON item_id = items.id
LEFT JOIN units ON invoice_items.unit_id = units.id
GROUP BY item_id, invoice_items.unit_id ORDER BY items.id, units.weight DESC;
我尝试使用
group_concat
来浓缩冗余行,如下所示:SELECT
sum(qty), group_concat(item_id, items.title, sum(qty) SEPARATOR '-')
FROM invoice_items
LEFT JOIN items
ON item_id = items.id
LEFT JOIN units ON invoice_items.unit_id = units.id
GROUP BY item_id, invoice_items.unit_id ORDER BY items.id, units.weight DESC;
但是,它返回此错误:
Invalid use of group function
我想要的是将
sum
yield连接到一行,而不考虑任何其他字段。以下是查询结果的屏幕截图:
我需要第一排像这样:
item_id: 1
sum(qty): 2, 13, 5
title: اسبوسيد أقراص
最佳答案
只需使用查询(使用适当的列名作为子查询)执行另一个group by
:
SELECT item_id, title, GROUP_CONCAT(sumqty)
FROM (SELECT ii.item_id, sum(qty) as sumqty, i.title
FROM invoice_items ii LEFT JOIN
items i
ON ii.item_id = i.id LEFT JOIN
units u
ON ii.unit_id = u.id
GROUP BY ii.item_id, ii.unit_id
) ii
GROUP BY item_id;
关于mysql - MySQL中的Concat SQL和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34814567/