我确信,这是一个措辞严厉的问题,但我想不出更好的方式来表达它。这是一个想法,假设我有一个看起来像这样的表:
id, status, orgId
123, green, 1
234, green, 1
345, blue, 1
456, blue, 2
567, blue, 2
789, red, 3
890, green, 3
我希望获得所有orgId的列表,其中orgId的所有id的状态都是蓝色。鉴于上述表格,查询将导致“2”。
请原谅我这是否相当容易,但我对SQL的深度知识相当浅薄。谢谢!
答案 0 :(得分:0)
基本上,你会想要使用distinct,因为你只是在寻找每个答案中的一个,并且你需要一个只有状态为蓝色的WHERE
子句。
SELECT
find.id
FROM (
SELECT
DISTINCT(orgId) AS id
FROM
my_table item
WHERE
item.status = 'blue') find
WHERE
NOT EXISTS (
SELECT
*
FROM
my_table verify
WHERE
verify.orgId = find.id
AND
verify.status != 'blue')