Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将具有相同ID的多行合并为一行?_Mysql_Sql_Sql Server_Tsql - Fatal编程技术网

Mysql 如何将具有相同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的多行合并为一行

我有一张桌子:

+----+------+------+------+
| 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\u fetch\u数组获取值


    这是mysql还是sql server,它们是两种不同的产品,请选择一种;如果您正在寻找sql server,答案是“自连接”。@Random\u User在我看来更像是一个支点。请阅读一些关于改进您的问题的提示。因为sql是一组无序的数据,不使用ORDER BY。。因为您或多或少想要将记录编号转换为列编号,所以必须使用ORDER BY。。问题在于,示例数据不包含一列,我们可以在该列中识别订单,例如带有自动增量的主键或日期时间列。使用此数据是可能的,但如果不使用ORDER BY,结果将不稳定,因为SQL数据库可以在不使用ORDER BY的情况下以任意顺序返回记录。您是在尝试使用动态数量的重复项来执行此操作,还是可以假设为3?4.是最大值。(如果是这样,这很容易)谢谢你回答这个问题。如果我想在不同的列中存储具有相同ID的值。我如何编写代码?为什么要创建新列。?你可以同意我的回答