如何解决此问题?使用GROUP_CONCAT

时间:2017-12-08 03:57:57

标签: mysql

我有一个查询可以获取所有产品名称并将名称连接到1列。但我无法弄清楚如何让它发挥作用。这是查询。

SELECT package_id, 
GROUP_CONCAT
(
    SELECT c.product_name FROM tbl_product c WHERE c.product_id IN 
    (
        SELECT a.product_id FROM tbl_package_detail a WHERE a.package_id = b.package_id
    ) 
    ORDER BY c.product_id
)
FROM tbl_package b
GROUP BY package_id

请注意:

SELECT c.product_name FROM tbl_product c WHERE c.product_id IN 
(
    SELECT a.product_id FROM tbl_package_detail a WHERE a.package_id = b.package_id
) 
ORDER BY c.product_id

返回我需要的所有产品名称。我不确定我是否正确使用GROUP_CONCAT

错误消息:

您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以便在“SELECT c.product_name FROM tbl_product c WHERE c.product_id IN”附近使用正确的语法

1 个答案:

答案 0 :(得分:1)

尝试以下

SELECT
  b.package_id, 
  GROUP_CONCAT(c.product_name ORDER BY c.product_id) ProductList
FROM tbl_package b
LEFT JOIN tbl_package_detail a ON a.package_id = b.package_id
LEFT JOIN tbl_product c ON c.product_id=a.product_id
GROUP BY b.package_id

GROUP_CONCAT是一个像SUM/AVG/MIN/MAX/COUNT这样的聚合函数。