【发布时间】:2017-01-11 18:27:40
【问题描述】:
我有以下格式的 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() 将忽略 NULL。 -
@BillKarwin 我将数据加载到 MySQL 的软件发送 emtpy 字符串,这就是我不能使用 NULL 的原因。
-
见函数NULLIF()