mysql - group_concat,将一列连接成一行,如果其他列相等

标签 mysql sql

在我的包含衣服的数据库上运行以下查询会得到一个 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

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/

相关文章:

MySQL GROUP BY CASE 错误

mysql - Spring JDBC 使用 application.properties 文件

PHP MySQL 选择随机行

python - SQLAlchemy 混合表达式连接问题

mysql - 根据不同表中的条件进行计数

mysql - SQL Like %>=值

sql - 选择查询,选择一条选择语句

sql - PostgreSQL 中的计算/计算/虚拟/派生列

sql - 根据条件连接不同的表

sql - GROUP by ITEM number 和 Quantity to Stock 的总和