我想请求您的帮助,以实现以下目标 我有一个表,id列可能在多行上具有相同的id,对应于另一列上的不同值,如示例bellow
表#1
+-----+---------+
| id1 | value1 |
+-----+---------+
| 1 | 1 |
+-----+---------+
| 1 | 2 |
+-----+---------+
| 1 | 3 |
+-----+---------+
| 2 | 4 |
+-----+---------+
| 2 | 5 |
+-----+---------+
| 2 | 6 |
+-----+---------+
基于id列,我需要在同一个单元格中输入相同id的值,并用逗号分隔,如下例所示
那些需要在另一张桌子上更新
表#2
+-----+---------+
| id2 | value2 |
+-----+---------+
| 1 | 1,2,3 |
+-----+---------+
| 2 | 4,5,6 |
+-----+---------+
如何做到这一点?
答案 0 :(得分:1)
对数据进行非规范化并违反第一范式(1NF)的原因是什么?你不应该这样做 - 最好将数据规范化。如果需要以这种方式显示数据,则可以创建视图。
无论如何,因为这个答案也应该包括一个解决方案,这里有一个:
使用GROUP_CONCAT()
聚合函数:
SELECT id1, GROUP_CONCAT(value1 ORDER BY value1 ASC SEPARATOR ',')
FROM table1
GROUP BY id1
更新其他ID匹配的表格中的结果:
UPDATE table2 a
INNER JOIN (
SELECT id1, GROUP_CONCAT(value1 ORDER BY value1 ASC SEPARATOR ',') AS value2
FROM table1
GROUP BY id1
) b ON a.id1 = b.id2
SET a.value2 = b.value2
答案 1 :(得分:0)
你可以使用group_concat
select id, group_concat(value1) as value2
from table1
group by id