2015-09-05 5 views
0

У меня есть сценарий, в котором идентификатор имеет три флага. НапримерОдна запись из нескольких записей в таблице

ID flag1 flag2 flag3 
1 0  1  0 
2 1  0  0 
1 1  0  0 
1 0  0  1 
2 0  1  0 
3 0  1  0 
4 1  0  0 

Теперь я хочу записи, имеющие flag2 = 1 только .. J = т.е. 3 имеет flag2 = 1, где, как ID = 1 и 2, имеет flag1 и flag3 = 1 наряду с flag2 = 1. Я не хочу ID = 1 и 2. Я не могу сделать идентификатор уникальным или основным. Я пробовал с случаем, когда заявления, но это я как-то не хватает основной логики. Мы можем сделать это с помощью CTE, но я хочу повторить это для трех разных сценариев (ту же логику я хочу повторить для ID = 4, где только Flag1 = 1).

+0

Я сомневаюсь, что вы используете как MySQL и SQL Server. Пожалуйста, отметьте свой вопрос с помощью базы данных * one *, которую вы используете. –

+0

Ваше объяснение сбивает с толку. вы имеете в виду, что вам нужны только идентификаторы, где каждая запись/строка идентификатора имеет флаг2 == 1? поэтому в вашем примере только ID = 3? – hoijui

+0

Какая СУБД вы используете? –

ответ

0

Вы можете получить идентификаторы с этим условием, используя group by и having:

select id 
from table t 
group by id 
having min(flag2) = max(flag2) and min(flag2) = 1; 
+0

Спасибо! Оно работает. :-) – chits

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