【问题标题】:GROUP_CONCAT around CONCAT gives an error - Invalid use of group functionCONCAT 周围的 GROUP_CONCAT 给出错误 - 组函数的使用无效
【发布时间】:2013-01-17 16:13:15
【问题描述】:

我正在尝试对以下查询返回的结果进行 GROUP_CONCAT:

SELECT
      CONCAT(p.product_name, " (", SUM(bp.quantity), ")") AS products
FROM product p
INNER JOIN booking_products bp ON p.product_id = bp.product_id
GROUP BY p.product_id

此查询返回以下内容:

------------
| products |
------------
Shampoo (3)
Advil (1)
Dry Shampoo (4)
Cepacol (5)

当我尝试运行下面的查询时,我收到一个错误:“#1111 - 组函数的无效使用”。这有什么问题?

SELECT
    GROUP_CONCAT(
        CONCAT(p.product_name, " (", SUM(bp.quantity), ")") 
        SEPARATOR ", "
    ) AS products
FROM product p
INNER JOIN booking_products bp ON p.product_id = bp.product_i
GROUP BY p.product_id

当然应该返回:

Shampoo (3), Advil (1), Dry Shampoo (4), Cepacol (5)

感谢您的帮助。

【问题讨论】:

  • Afaik,Oracle 是少数支持嵌套聚合函数的 RDBMS 系统之一。 MySQL没有,所以SUM()里面GROUP_CONCAT()是无效的。

标签: mysql concat group-concat


【解决方案1】:
SELECT GROUP_CONCAT(products) FROM
(
    SELECT CONCAT(p.product_name, " (", SUM(bp.quantity), ")") AS products
    FROM product p
    INNER JOIN booking_products bp ON p.product_id = bp.product_id
    GROUP BY p.product_id
) x

GROUP_CONCAT 不起作用,因为您已经使用了 SUM,它是一个 GROUP 函数。

【讨论】:

  • 感谢您的洞察力。当我关闭 GROUP BY products 时它可以工作。
  • 啊,是的。我会在我的回答中反映这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多