Mysql 如何将具有相同ID的多行合并为一行?
如何将具有相同ID的多行合并为一行 我有一张桌子:Mysql 如何将具有相同ID的多行合并为一行?,mysql,sql,sql-server,tsql,Mysql,Sql,Sql Server,Tsql,如何将具有相同ID的多行合并为一行 我有一张桌子: +----+------+------+------+ | ID | A | B | C | +----+------+------+------+ | 1 | 123 | 31 | 456 | | 1 | 412 | NULL | 1 | | 2 | 567 | 38 | 4 | | 2 | 567 | NULL | NULL | | 3 | 2 | NULL | NULL |
+----+------+------+------+
| ID | A | B | C |
+----+------+------+------+
| 1 | 123 | 31 | 456 |
| 1 | 412 | NULL | 1 |
| 2 | 567 | 38 | 4 |
| 2 | 567 | NULL | NULL |
| 3 | 2 | NULL | NULL |
| 3 | 5 | NULL | NULL |
| 4 | 6 | 1 | NULL |
| 4 | 8 | NULL | 5 |
| 4 | NULL | NULL | 5 |
+----+------+------+------+
+----+-----+------+------+-----+------+------+------+------+----+
| ID | A | B | C | A2 | B2 | C2 | A3 | B3 | C3 |
+----+-----+------+------+-----+------+------+------+------+----+
| 1 | 123 | 31 | 456 | 412 | NULL | 1 | | | |
| 2 | 567 | 38 | 4 | 567 | NULL | NULL | | | |
| 3 | 2 | NULL | NULL | 5 | NULL | NULL | | | |
| 4 | 6 | 1 | NULL | 8 | NULL | 5 | NULL | NULL | 5 |
+----+-----+------+------+-----+------+------+------+------+----+
我想要一张桌子:
我有一张桌子:
+----+------+------+------+
| ID | A | B | C |
+----+------+------+------+
| 1 | 123 | 31 | 456 |
| 1 | 412 | NULL | 1 |
| 2 | 567 | 38 | 4 |
| 2 | 567 | NULL | NULL |
| 3 | 2 | NULL | NULL |
| 3 | 5 | NULL | NULL |
| 4 | 6 | 1 | NULL |
| 4 | 8 | NULL | 5 |
| 4 | NULL | NULL | 5 |
+----+------+------+------+
+----+-----+------+------+-----+------+------+------+------+----+
| ID | A | B | C | A2 | B2 | C2 | A3 | B3 | C3 |
+----+-----+------+------+-----+------+------+------+------+----+
| 1 | 123 | 31 | 456 | 412 | NULL | 1 | | | |
| 2 | 567 | 38 | 4 | 567 | NULL | NULL | | | |
| 3 | 2 | NULL | NULL | 5 | NULL | NULL | | | |
| 4 | 6 | 1 | NULL | 8 | NULL | 5 | NULL | NULL | 5 |
+----+-----+------+------+-----+------+------+------+------+----+
试试这个:-
1:-请将数据表结构更改为不允许空值
SELECT
GROUP_CONCAT(if (`A` ='0', 'NOVAL', `A`)SEPARATOR '----') as A,
GROUP_CONCAT(if (`B` ='0', 'NOVAL', `B`)SEPARATOR '----') as B,
GROUP_CONCAT(if (`C` ='0', 'NOVAL', `C`)SEPARATOR '----') as C
FROM que1
GROUP BY id
这是mysql还是sql server,它们是两种不同的产品,请选择一种;如果您正在寻找sql server,答案是“自连接”。@Random\u User在我看来更像是一个支点。请阅读一些关于改进您的问题的提示。因为sql是一组无序的数据,不使用ORDER BY。。因为您或多或少想要将记录编号转换为列编号,所以必须使用ORDER BY。。问题在于,示例数据不包含一列,我们可以在该列中识别订单,例如带有自动增量的主键或日期时间列。使用此数据是可能的,但如果不使用ORDER BY,结果将不稳定,因为SQL数据库可以在不使用ORDER BY的情况下以任意顺序返回记录。您是在尝试使用动态数量的重复项来执行此操作,还是可以假设为3?4.是最大值。(如果是这样,这很容易)谢谢你回答这个问题。如果我想在不同的列中存储具有相同ID的值。我如何编写代码?为什么要创建新列。?你可以同意我的回答