Sql 选择一个值而不是另一个值
表测试:Sql 选择一个值而不是另一个值,sql,database,Sql,Database,表测试: id cd 1 P 2 P 2 S 3 S 我想写一个查询,只选择cd='S'的行,而不选择cd='S'和cd='p'的行 我会在WHERE子句中使用cd 因此,此场景中的查询将只返回id号3。您可以尝试使用: SELECT * FROM test T WHERE cd = 'S' AND 0=( SELECT COUNT(*) FROM test B WHERE B.cd = 'P' AND B.id = T.id ) 或者
id cd
1 P
2 P
2 S
3 S
我想写一个查询,只选择cd='S'的行,而不选择cd='S'和cd='p'的行
我会在WHERE子句中使用cd
因此,此场景中的查询将只返回id号3。您可以尝试使用:
SELECT * FROM test T WHERE cd = 'S' AND 0=(
SELECT COUNT(*) FROM test B WHERE B.cd = 'P' AND B.id = T.id
)
或者,您可以使用“加入”:
SELECT * FROM test A LEFT JOIN test B ON
A.id = B.id AND
B.cd = 'P'
WHERE B.cd IS NULL AND A.cd = 'S';
谢谢我设计了一个版本,不存在以及这是更快,但你的回答帮助了我。选择*FROM T,其中cd='S'不存在选择1,其中cd='P'和id=T.id;
SELECT *
FROM <TABLE>
WHERE CD='S' AND ID NOT IN(SELECT ID FROM <TABLE> WHERE CD='P')