我有以下格式的MySQL表。这是我运行的程序的输出,我无法更改它。MySQL:根据列值将数据从多行移动到一行
+---+------------------------+
| | A B C D E |
+---+------------------------+
| | model amz wmt abt tgt |
| 1 | c3000 100 |
| 2 | c3000 200 |
| 3 | c3000 150 |
| 4 | c3000 125 |
| 5 | A1234 135 |
| 6 | A1234 105 |
+---+------------------------+
我想根据第1列即模型中的值将所有行移动到一行中。需要说明的是空白行是不实际的空白,并包含一个空字符
所需的输出:
+---+-----------------------+
| | A B C D E |
+---+-----------------------+
| | model amz wmt abt tgt |
| 1 | c3000 100 200 150 125 |
| 2 | A1234 200 105 135 |
+---+-----------------------+
我尝试使用
select model,group_concat(wmt),group_concat(amz) from table_name group by model
而我得到的输出充满逗号
+---+----------------------------------+
| | A B |
+---+----------------------------------+
| | model amz wmt |
| 1 | c3000 ,,,,100,,,, ,,,200,,,, |
| 2 | A1234 ,,200,,,,,, ,105,,,,,, |
+---+----------------------------------+
你得到的逗号是因为你存储了空字符串''''那里有一个缺失值。如果你使用NULL作为缺失值,group_concat()会忽略空值。 –
@BillKarwin我将数据加载到MySQL的软件会发送一些静态字符串,这就是为什么我不能使用NULL的原因。 –
查看函数[NULLIF()](http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_nullif) –