SQL query-ID не существует в другой таблице или существует, но со всеми записями в истории?


У меня есть таблица T1

ID
1
2
3

И таблица T2

ID    HISTORY
1       1
1       1
2       1
2       0 

Я должен выбрать из T1 все записи, которые не существуют в T2 или существуют, но все записи находятся в истории (флаг истории =1)

Так что для этого мой результат будет

1
3

Каков правильный SQL-запрос для этого? Спасибо

3 3

3 ответа:

Попробуйте это:

select * from T1
where ID not in(select ID from T2 where HISTORY_FLG!=1)


SQL Fiddle demo

Попробуйте использовать not exists

select * 
from t1 t
where not exists
     (
       select 1
       from t2 a
       where a.id = t.id
       and a.HISTORY <> 1
     )

SQL Fiddle DEMO

Попробуйте это:

SELECT * from T1 
WHERE id not 
IN ( SELECT tb1.id FROM( SELECT id FROM T2 WHERE history=0 ) as tb1 )