MYSQL列出所有类别

时间:2016-05-24 10:45:47

标签: mysql

我有这个架构:

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”的选项,但是不允许使用无限字符串

1 个答案:

答案 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