2016-07-04 10 views
1

を持っている:SQLiteで複数の条件でDELETEするには?例えば、私は次の表を

create table t1(id1 int, id2 int, info text); 
create table t2(id1 int, id2 int); 

insert into t1 values(11, 12, "a"); 
insert into t1 values(11, 13, "b"); 
insert into t1 values(12, 13, "c"); 
insert into t1 values(13, 11, "d"); 
insert into t1 values(16, 17, "e"); 

insert into t2 values(11, 12); 
insert into t2 values(15, 13); 
insert into t2 values(12, 14); 

は、私は私がどこid1id2一致、またはどちらかの両方それらを維持したい除いid1またはid2は、t2のものと一致したt1行から削除します一致します。

つまり、2行(11は両方の表にとして存在するため)を削除したいのですが、3(12が両方の表にid2として存在します)、行1は表示されません両方のテーブルに)、また行4(13 id1に表示されないと11はt2id2ではないので)、またMySQLでは、行5

私はサブクエリでこれを行うことができると思いますが、私それがSQLiteで許可されているとは思わない。これはどうすればできますか?

+0

追加の列を追加できるので、各行に一意のIDがありますか?はい。 – vy32

+0

一意のIDを追加できないのは不可能ですか? –

答えて

2

SQLiteはサブクエリを許可します。

delete from t1 where exists 
    (select * from t2 where (t2.id1 = t1.id1 or t2.id2 = t1.id2) 
        and not (t2.id1 = t1.id1 and t2.id2 = t1.id2)); 
+0

私は思い当たりませんでした。ありがとう! –

関連する問題