基于具有多列的键的另一个表删除行

时间:2013-07-12 08:16:56

标签: sqlite delete-row

有很多关于根据另一个表删除表记录的查询。但是没有它们对我的情况不起作用。

我正在使用sqlite3

我在2 dbs中有2个同名的表。

DB1:

CREATE TABLE OwnerService1Table1 ("key1" TEXT,"key2" TEXT, "nonkey1" TEXT,"nonkey2" TEXT,PRIMARY KEY("key1","key2"));

记录

Key1    Key2    NonKey1 NonKey2
-------------------------------
AA1     BB1         CC1     DD1
AA2     BB2         CC2     DD2

DB2:

CREATE TABLE OwnerService1Table1 ("key1" TEXT,"key2" TEXT, "key3" TEXT default "KDEF","nonkey1" TEXT,"nonkey2" TEXT,PRIMARY KEY("key1","key2","key3"));

记录

Key1    Key2  Key3    NonKey1 Nonkey2
------------------------------------
AA1     BB1   New1    CC12    DD12
AA3     BB3   New2    CC3     DD3
AA4     BB4   New3    CC4     DD4

(我使用attach,打开DB2并附加DB1)

我想删除DB2.OwnerService1Table1中的所有记录,其中Key1和Key2与DB1.OwnerService1Table1相同

在这种情况下,应该从DB2.OwnerService1Table1中删除带有(AA1,BB1)的行

1 个答案:

答案 0 :(得分:3)

我认为您的意思是从DB2.OwnerService1Table1中删除记录,其中Key1和Key2在DB1.OwnerService1Table1中存在(在此组合中)。

为简单起见,我将在这里调用两个表db1db2

声明是

delete from db2 where exists (select 1 from db1 where
    db1.key1 = db2.key1 and db1.key2 = db2.key2)