2015-07-30 5 views
0

Я ищу, но я ничего не могу с этим поделать. Мне нужен SQL запрос сервера какSQL Server all (select ...) is null

select t1.x 
from @tablename as t1 
where all 
    (select t2.y from @tablename as t2 where t1.x=t2.x) is null 

@tablename «s такой же

Но я не могу использовать all(select ...) is null части запроса.

Спасибо.

+0

Что именно вы хотите «выбрать»? – gotqn

+0

Я понимаю это правильно? У вас есть таблица с несколькими строками с одинаковым значением x, но вы хотите ее только в том случае, если у всех строк есть y? Или иначе, когда есть строка для значения x, где y также имеет значение, вы не хотите x? – kl78

+0

Я попытался выбрать значения x строк, все значения которых равны нулю в таблице. Всем спасибо. –

ответ

1

Вы хотите not exists?

select t1.x 
from @tablename as t1 
where not exists (select t2.y from @tablename as t2 where t1.x = t2.x) 

Это проверяет, нет соответствующих значений.

Или, может быть,

select t1.x 
from @tablename t1 
where not exists (select 1 
        from @tablename as t2 
        where t1.x = t2.x and t2.y is not null 
       ) ; 

Это тесты, что любое совпадающее значение имеет NULL для y.

+0

Очень хороший подход, который никогда не бывает для новичка, подобного мне. Большое спасибо. –