2015-05-06 5 views
-1

Я таблица, имеющий данные, как:выберите строки, имеющие зависимости от других строк

C1 || C2 
----------------- 
1  || a 
1  || b 
1  || c 
2  || a 
2  || b 
2  || c 
3  || a 
3  || b 
4  || c 
4  || d 
5  || c 
6  || a 

Я, чтобы выбрать все C1 личные номера, которые имеют С2 b или c и нон значение. Предложения?

Как только -> С1 = 4 и 5

+0

Вы хотите просто C1 или две строки (C1,4) и (C1,5)? – jarlh

+0

комментарий от ughai является правильным :-) – michael

ответ

0

Этот ответ использует подобную технику в соответствии с ответом Гордона Lindoff в.

Вы можете использовать GROUP BY с having следующим образом.

select c1 
from table t 
group by c1 
having sum(case when c2 in ('b', 'c') then 1 else 0 end) > 0 
and sum(case when c2 = 'a' then 1 else 0 end) = 0 
0

Вы можете использовать пункт having для подсчета других значений. Если счетчик равен 0, то вы хотите c1 значение:

select c1 
from table t 
group by c1 
having sum(case when c2 in ('b', 'c') then 1 else 0 end) = 0 
+3

Правильная техника, но неправильные критерии ;-) 'b' или 'c' должны существовать, 'a' не должно существовать. –

+1

у вас есть немного некорректный 'с суммой (случай, когда c2 in ('b', 'c'), затем 1 else 0 end)> 0 и sum (случай, когда c2 in ('a'), затем 1 else 0 end) = 0' – ughai

+0

@ThorstenKettner. , , Это было правильно, поскольку я интерпретировал вопрос - теперь я вижу, что означает «не значение». Я воспринял это как «не любое другое значение». –

Смежные вопросы