如何获得表中特定值的唯一结果

时间:2011-04-22 18:23:11

标签: mysql

我确信,这是一个措辞严厉的问题,但我想不出更好的方式来表达它。这是一个想法,假设我有一个看起来像这样的表:

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的深度知识相当浅薄。谢谢!

1 个答案:

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