我有以下格式的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) –