我有一个MYSQL表,大约有350列。有很多“空”值,我需要将几行合并在一起,并用非空值替换“空”值。我的桌子是这样的:

id|col1|col2|col3|cola|col_b|...|col350
1 |12  |4   |3   |-77 |-77  |...|-77
2 |12  |-77 |-77 |2   |-77  |...|-77
3 |12  |-77 |-77 |-77 |6    |...|-77
4 |12  |-77 |-77 |-77 |-77  |...|6
5 |13  |3   |-77 |-77 |-77  |...|-77
6 |13  |-77 |5   |-77 |-77  |...|-77
...

-77是空值的替换。Incol1是属于一起的数据集的id。
我需要一个select查询来将非“空”值合并到每个col1-id的一个结果行中。对于col1 id 12,它应该如下所示:
1 | 12 | 4 | 3 | 2 | 6 | ... | 6

有人知道怎么做吗?

最佳答案

SELECT col1,
       MAX(CASE WHEN col2 <> -77 THEN col2 END) AS col2,
       MAX(CASE WHEN col3 <> -77 THEN col3 END) AS col3,
       MAX(CASE WHEN cola <> -77 THEN cola END) AS cola,
       MAX(CASE WHEN col_b <> -77 THEN col_b END) AS col_b,
       ... and so on
       MAX(CASE WHEN col350 <> -77 THEN col350 END) AS col350
FROM YourTable
GROUP BY col1

关于mysql - 将表中的非空值合并到一个结果行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30112441/

10-13 07:13