如何在sqlite的第二列中选择具有相同标识符且只有一个值的行?

时间:2014-08-11 08:15:52

标签: sql sqlite

我的表是:

sid  status   
----|-------|
 18 | 1     | 
 23 | 3     | 
 23 | 3     | 
 44 | 3     | 
 44 | 1     | 
 44 | 3     | 

我需要选择状态为 " 3"

的sid行

结果将是:

sid  status   
----|-------|
 23 | 3     | 
 23 | 3     | 

如何在sqlite中执行此操作?

2 个答案:

答案 0 :(得分:1)

您希望获取不存在具有相同sid但不同status的相应行的所有行:

SELECT *
FROM MyTable
WHERE status = 3
  AND NOT EXISTS (SELECT 1
                  FROM MyTable AS T2
                  WHERE T2.sid = MyTable.sid
                    AND T2.status != 3)

答案 1 :(得分:1)

您可以使用not exists子查询过滤掉另一行所存在的行sidstatus = 3

select  sid
,       status
from    YourTable yt1
where   not exists  
        (
        select  *
        from    YourTable yt2
        where   yt1.sid = yt2.sid
                and yt2.status <> 3
        )