选择具有相同ID但在另一个列中都为空值的行,并按相同ID分组

时间:2019-03-09 09:41:11

标签: mysql

我只想为特定的用户名列获取具有NULL值的行。

  • 如果所有行的值都不为null
  • 或该行之一具有一些非null的值

然后应该在输出中忽略它。

但是,如果在输出中应考虑具有相同用户名的所有行且其值为null。

下面是示例样本和输出。如何使用sql查询来完成?

+----------+------------+
| username | id_group   |
+----------+------------+
| A        |    5       |
| A        |    7       |
| A        |    8       |
| B        |    12      |
| B        |   null     |
| C        |   null     |
| C        |    5       |
| D        |   null     |
| D        |   null     |
+----------+------------+

输出

+----------+------------+
| username | id_group   |
+----------+------------+
| D        |   null     |
+----------+------------+

sqlfiddle

1 个答案:

答案 0 :(得分:0)

使用NOT EXISTS查询:

SELECT DISTINCT username 
FROM `table` t1 
WHERE 
    NOT EXISTS (
        SELECT username 
        FROM `table` t2 
        WHERE t2.username = t1.username AND t2.id_group IS NOT NULL
    )