Выбрать столбец на основе условия? - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть Детальная таблица "Деталь", как показано ниже:

Деталь:

    ID          StatusID
   ----         --------
     1             4
     1             4
     2             4
     2             3
     3             4   
     3             4
     4             3
     4             3

Здесь я хочу выбрать только тот идентификатор, который имеет все StatusID = 4:

Мой желаемый результат должен быть таким, как показано ниже:

  ID
 ----
  1
  3

Как этого добиться?

Ответы [ 3 ]

2 голосов
/ 08 сентября 2011

Вы можете использовать подзапрос not exists:

select  distinct yt1.ID
from    YourTable yt1
where   yt1.StatusID = 4
        and not exists
        (
        select  *
        from    YourTable yt2
        where   yt2.StatusID <> 4
                and yt2.ID = yt1.ID
        )
1 голос
/ 08 сентября 2011

Просто для удовольствия, как насчет присоединяемой версии

select distinct
        t.id
    from
        your_table as t
        left outer join(select
                id,
                statusid
            from
                your_table
            where
                statusid != 4
        ) as j
            on t.id = j.id
    where
        j.id is null
;
1 голос
/ 08 сентября 2011
select distinct ID 
from YourTable
where ID not in
(
    select ID 
    from YourTable
    where StatusID <> 4
)
...