选择一个值而不是另一个

时间:2014-09-15 08:24:23

标签: sql database

表测试:

id     cd
1      P
2      P
2      S
3      S

我想编写一个查询,只选择cd = 'S'的行,而不选择cd = 'S' and cd = 'P'的行。

我会在cd子句中使用WHERE

因此,此方案中的查询将仅返回ID号3。

2 个答案:

答案 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';