SQL:过滤掉相同记录的不同状态

时间:2015-10-23 17:39:16

标签: sql

我正在尝试过滤掉一些记录,但无法制作它。

以此表为例,

ID   Status    Name
1      NULL    ItemA  
2      2       ItemB  
3      2       ItemA  
4      NULL    ItemC

我尝试将名称显示为仅具有NULL状态的结果,如果对于状态为2的项目,则不显示它。在这种情况下,结果只有ItemC,因为即使ItemA的一条记录具有NULL状态,也会有另一条状态为2的ItemA记录。

我被困在这里。

3 个答案:

答案 0 :(得分:1)

如果您想要所有状态为NULL的名称,那么您可以使用聚合:

select name
from t
group by name
having max(status) is null;

答案 1 :(得分:0)

执行此操作的一种方法是使用exceptminus,具体取决于所使用的数据库。请注意,这不适用于MySQL。

select * from tablename 
where name in 
(
select name from tablename where status is null
except --minus if you are using Oracle
select name from tablename where status is not null
)

答案 2 :(得分:0)

VKP的答案更适合我的查询,但戈登的答案很好。 再次感谢你们。