4

我有桌子 T1

ID
1
2
3

和表 T2

ID    HISTORY
1       1
1       1
2       1
2       0 

我必须从 T1 中选择 T2 中不存在或存在但所有记录都在历史中的所有记录(历史标志 =1)

所以为此我的结果将是

1
3

什么是正确的 SQL 查询?谢谢

4

3 回答 3

23

尝试这个:

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


SQL Fiddle 演示

于 2012-10-03T06:38:37.643 回答
3

尝试使用not exists

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

SQL 小提琴演示

于 2012-10-03T06:39:30.067 回答
2

尝试这个:

SELECT * from T1 
WHERE id not 
IN ( SELECT tb1.id FROM( SELECT id FROM T2 WHERE history=0 ) as tb1 )
于 2012-10-03T06:49:23.110 回答