表测试:
id cd
1 P
2 P
2 S
3 S
我想编写一个查询,只选择cd = 'S'
的行,而不选择cd = 'S' and cd = 'P'
的行。
我会在cd
子句中使用WHERE
。
因此,此方案中的查询将仅返回ID号3。
答案 0 :(得分:1)
SELECT *
FROM <TABLE>
WHERE CD='S' AND ID NOT IN(SELECT ID FROM <TABLE> WHERE CD='P')
答案 1 :(得分:0)
您可以尝试:
SELECT * FROM test T WHERE cd = 'S' AND 0=(
SELECT COUNT(*) FROM test B WHERE B.cd = 'P' AND B.id = T.id
)
或者你可以使用JOIN:
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';