基本上我的select语句返回如下:
ID Status
100 1
100 2
101 1
我正在寻找的是,如果状态为1的ID,并且如果相同的ID具有另一个状态ID为2则返回
简短结果如下:
ID Status
101 1
提前致谢!
答案 0 :(得分:2)
以下查询返回仅出现一次的ID值。
SELECT ID
FROM t
GROUP BY ID
HAVING COUNT(*) = 1
您提供的样本数据应该足够了。如果还有其他情况,请告诉我。
答案 1 :(得分:1)
你需要子查询和NOT IN
如果您将列status
作为INT
数据类型
SELECT *
FROM table
WHERE status = 1
AND ID NOT IN (
SELECT ID
FROM table
WHERE status = 2
);
答案 2 :(得分:0)
进行通用查询,该查询将删除所有重复行,而不仅仅是特定ID:
select ID
from table where ID NOT IN
(select ID from table GROUP BY ID HAVING count(Status) > 1)
/* Subquery will fetch ID's having multiple entries*/
答案 3 :(得分:0)
CTE'ID'检索在DB中具有单个记录的所有ID。然后将其连接到原始表以将结果作为一对返回(ID,Status)
;with IDs as
(
select ID
from yourtable
group by ID
having count(*) = 1
)
select i.ID, y.Status
from yourtable y
inner join IDs i on y.ID = i.ID
order by i.ID