在我的包含衣服的数据库上运行以下查询会得到一个 result ,我有多行相同的产品,唯一的区别是尺寸列。
SQL 查询:
SELECT
categories.name AS "category",
color_variant.pcode AS "code",
stock.size AS "size",
color_variant.price AS "price"
FROM
categories, product, color_variant, stock
WHERE
categories.id = product.category_id AND
product.id = color_variant.product_id AND
color_variant.id = stock.color_variant_id
ORDER BY
categories.id
我想加入每个产品的尺寸行,所以我得到类似的东西
category code sizes price
jean 1018918053 24,25,26,27,28,29,30,31,32 119.99
jean 1018916407 26 159.99
jean 1018917373 31 159.99
jean 1018917354 25 109.99
jean 1018919115 24,25,26,27,28,29,30,31,32 129.99
jean 1018913449 24,25,26,27 109.99
我通过将 stock.size AS "size",
替换为
GROUP_CONCAT(DISTINCT stock.size ORDER BY stock.size SEPARATOR ', ') AS "sizes",
但这给了我一个单行结果,其中每个大小行都被连接起来,即使我将它用作子查询,
category code sizes price
jean 1018918053 1,105,11-12,115,2-3,23,24,25,26,27,28,2... 119.99
关于我做错了什么有什么想法吗?或者我该如何解决这个问题?
最佳答案
添加
GROUP BY categories.name, color_variant.pcode, color_variant.price
就在您的 ORDER BY
之前
关于mysql - group_concat,将一列连接成一行,如果其他列相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25793635/