身份证号码 | 缩写 |
---|---|
1 | A |
1 | B |
2 | B |
2 | B |
当我过滤ID = 1时, 然后我希望结果中只有第一行作为结果,A 在相同的 id 上具有优先权。 当我过滤 ID = 2 时, 那么我想要第 3 行和第 4 行的两个结果,因为 A 未列出。
我的sql有什么问题...
SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV = 'A'
UNION ALL
SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV = 'B'
GROUP BY ID
HAVING MAX(ABBREV) = 'A'
尝试使用exists,但我不确定我是否理解你的意思
SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV = 'A'
UNION ALL
SELECT ID
FROM TABLE_X
WHERE ID = 1
AND ABBREV = 'B'
AND NOT EXISTS (
SELECT 1
FROM TABLE_X
WHERE ID = 1
AND ABBREV = 'A'
)