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)


SQLFiddleデモ

于 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 に答える