我有一张表如:
table a
+------+-------+
| v1 | v2 |
+------+-------+
| 1 | one |
| 2 | two |
| 3 | two |
| 4 | two |
| 5 | NULL |
| 6 | NULL |
| 7 | three |
| 8 | three |
+------+-------+
我想通过列'v2'...
对此表中的数据进行分组mysql> select * from a group by v2 order by v1;
+----+-------+
| v1 | v2 |
+----+-------+
| 1 | one |
| 2 | two |
| 5 | NULL |
| 7 | three |
+----+-------+
...但是将NULL值保留在不同的行上。是否可以防止将NULL值折叠为单行?
答案 0 :(得分:4)
这将完成你所要求的:
select min(v1) as v1, v2 from a group by v2, ifnull(v2, v1) order by v1;
这将按v2
进行分组,除非它是NULL
,在这种情况下,它将按v1
进行分组。由于您的两个NULL
值对v1
有两个不同的值,因此会将它们分开。