我只想获取具有值NULL
和其他值的行,而不是NULL
特定用户名列。
如果该特定用户名的两行都为 null,或者两者都具有 null 以外的其他值,则它不应出现在输出中。如果相同的用户名有两行以上,并且具有 null 和其他一些值,那么它们应该出现。
下面是示例示例和输出。如何使用 sql 查询来完成?
+----------+-------+
| username | col2 |
+----------+-------+
| a | abc |
| a | ef |
| b | null |
| b | null |
| c | der |
| c | null |
+----------+-------+
输出
+----------+------+
| username | col2 |
+----------+------+
| c | der |
| c | null |
+----------+------+
您应该能够使用条件聚合来获取具有 in
col2
和null
.我建议使用带有条件的 HAVING 子句。查询类似于:
请参阅SQL Fiddle with Demo。此查询按每个用户名对您的数据进行分组,然后使用条件逻辑检查是否
col2
满足您想要的两个条件 - 其中col2
不为空且col2
为空。然后,您可以在子查询等中使用它来获取
username
和col2
值:请参阅SQL Fiddle with Demo。
如果你有不止
col2
一行同时包含null
另一个值,那么你只需要HAVING
稍微改变这个子句:请参阅带有演示的 SQL Fiddle
另一种解决方案:
在类似的逻辑脉络中:
完后还有:
只是另一种方法:
这个也可以。 SQL Fiddle 演示
我获得 C1 作为每个用户名的总行数,C2 作为每个用户名的总空行数,稍后我会比较这些值。
我会使用子查询来选择这些用户名,例如:
我试过这个...