有没有什么方法可以使用sum中的group_concat屈服点或解决问题?
我有以下查询,它返回item_iditems.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
我想要的是将sumyield连接到一行,而不考虑任何其他字段。
以下是查询结果的屏幕截图:
mysql - MySQL中的Concat SQL和-LMLPHP
我需要第一排像这样:
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/

10-11 02:55
查看更多