仅当具有相同ID的所有项目在另一列中都具有相同的值时,才返回行

时间:2018-08-16 13:41:07

标签: sql

我正在尝试找出一种方法来识别在另一列中仅包含相同值的所有ID。

在上面的示例中,查找所有不活动的SubID只会返回C2的行(ID为2、5和6)。

样本数据:

enter image description here

2 个答案:

答案 0 :(得分:0)

使用分组依据和子查询

  select t.* from 
  (select subid,status from t t1     
   group by subid,status
   having count(*)>1
  ) as t1       
  inner join t on t.subid=t1.subid and t.status=t1.status

答案 1 :(得分:0)

您使用not exists

select t.*
from table t
where not exists (select 1 from table t1 where t1.subid = t.subid and t1.status = 'Active');

编辑::如果要获得状态相同的subid,则可以执行以下操作:

select t.*
from table t
where not exists (select 1 from table t1 where t1.subid = t.subid and t1.status <> t.status);