mysql - 合并具有相同 prod_id 的 SQL 列和数据

标签 mysql sql

我有一个如下所示的表格:

| id   | product | prod_id |
| 1001 | Item 1  | P1001   |
| 1002 | Item 2  | P1001   |
| 1003 | Item 3  | P1003   |

我想要的输出是:

| id   | prod_id        |
| 1001 | Item 1, Item 2 |
| 1003 | Item 3         |

如您所见,项目 1 和 2 具有相同的 prod_id。

这是我尝试过的:

从 table_name 中选择 id、prod_id,其中 prod_id = 产品;

基本上我尝试的是将所有具有相同 prod_id 的产品合并,然后将它们显示为 id 和 prod_id。

我是 mySQL 新手,希望得到一些关于如何做到这一点的反馈。我不确定我尝试解决问题的逻辑是否正确。

最佳答案

您可以尝试将聚合函数MINGROUP_CONCAT一起使用

架构 (MySQL v5.7)

CREATE TABLE T(
  id int,
  product varchar(50),
  prod_id varchar(50)
);


INSERT INTO T VALUES (1001,'Item 1','P1001');
INSERT INTO T VALUES (1002,'Item 2','P1001');
INSERT INTO T VALUES (1003,'Item 3','P1003');

查询#1

SELECT MIN(id) id,GROUP_CONCAT(product) prod_id        
FROM T
GROUP BY prod_id;

| id   | prod_id       |
| ---- | ------------- |
| 1001 | Item 1,Item 2 |
| 1003 | Item 3        |

View on DB Fiddle

关于mysql - 合并具有相同 prod_id 的 SQL 列和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53200601/

相关文章:

php - PHP和MySQL中如何查看另一个页面的多个订单信息

sql - 如何使用 Prisma JS 检查文本列是否为空

mysql - 使用内部连接在 SQL 中计算

sql - 具有子查询奇怪行为的 DELETE 语句

mysql - 用于连接但不在其他表中的 SQL 语句

mysql - node-mysql 池事件连接没有被释放?

android - 如何将任何硬代码值与数据库返回值连接或绑定(bind)?

mysql - 事务表的 self 比较以查找值

mysql - 在 MySQL 中选择元组链,邻接列表?

sql - 间隔 : How can I make sure there is just one row with a null value in a timstamp column in table?