我有这个架构:
table_products :product_id,名称,价格,
table_categories :category_id,name,
table_categories_products :category_id,product_id
我想列出我的数据库中的所有产品,包括每种产品的所有类别。
其实我使用这个查询:
SELECT p.id, p.name, p.price, GROUP_CONCAT(c.category_id, ';', c.name SEPARATOR ',')
FROM table_products
LEFT JOIN table_categories_products tcp ON tcp.product_id=p.product_id
LEFT JOIN table_categories c ON c.category_id=p.product_id
GROUP BY p.id
问题是一个产品可能在无限类别内,而group_concat有一个大小限制。
更新
我已经考虑过增加“group_concat_max_len”的选项,但是不允许使用无限字符串
答案 0 :(得分:2)
您可以通过以下方式更改group_concat max size:
SET [GLOBAL | SESSION] group_concat_max_len = val;
默认值为1024,最大可设置值为1073741824
至少那是doc所说的: http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat