如果针对所有状态 Q_GRADEBOOK_ID
的值为488,而不是返回Q_GRADEBOOK_ID
,否则我选择Q_GRADEBOOK_ID
,否则返回空
TABLE Q_GB_CAT_SCORE
---------------------------------------------------------
Q_GRADEBOOK_ID | PERSON_ID | STATUS | Q_GRADEBOOK_CAT_ID
1 | 1 | 488 | 1
1 | 1 | 488 | 2
1 | 2 | 488 | 1
2 | 2 | 486 | 1
2 | 2 | 488 | 2
我的查询
SELECT
DISTINCT
Q_GRADEBOOK_ID
FROM
Q_GB_CAT_SCORE WHERE
STATUS IN ('488')
此查询返回此结果
Q_GRADEBOOK_ID
1
2
预期结果
Q_GRADEBOOK_ID
1
我之所以如此,是因为Q_GRADEBOOK_ID
1返回是因为针对Q_GRADEBOOK_ID
1的所有状态均为488。
答案 0 :(得分:2)
您可以排除状态不同的ID:
SELECT distinct
Q_GRADEBOOK_ID
FROM Q_GB_CAT_SCORE
WHERE Q_GRADEBOOK_ID not in
(select distinct Q_GRADEBOOK_ID FROM Q_GB_CAT_SCORE WHERE status <> '488')
答案 1 :(得分:1)
您可以GROUP BY Q_GRADEBOOK_ID
并将条件放在HAVING子句中:
SELECT Q_GRADEBOOK_ID
FROM Q_GB_CAT_SCORE
GROUP BY Q_GRADEBOOK_ID
HAVING COUNT(*) = SUM(CASE WHEN STATUS = '488' THEN 1 ELSE 0 END)
或
SELECT Q_GRADEBOOK_ID
FROM Q_GB_CAT_SCORE
GROUP BY Q_GRADEBOOK_ID
HAVING SUM(CASE WHEN STATUS <> '488' THEN 1 ELSE 0 END) = 0