2013-07-12 1 views
2

다른 테이블을 기반으로 테이블 레코드를 삭제하는 것과 관련된 많은 쿼리가 있습니다. 그러나 그들 중 누구도 내 시나리오에서는 작동하지 않았습니다. 내가다중 행이있는 키가있는 다른 테이블을 기반으로 한 행

sqlite3를 사용하고

나는 2 DBS에 같은 이름을 가진 두 테이블을 가지고있다.

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 

내가 DB2.OwnerService1Table1에서 모든 레코드를 삭제하려면

을 (내가 DB1을 첨부 개방 DB2와 연결 사용) 여기서 같은이 경우 행에서

DB1.OwnerService1Table1

(AA1, BB1과의 키 1과 키 2)를 DB2에서 삭제해야합니다 .OwnerService1Table1

답변

2

DB1.OwnerService1Table1에 Key1과 Key2 (이 조합에 있음)가있는 레코드를 DB2.OwnerService1Table1에서 삭제한다고 가정합니다.

단순화하기 위해 난 그냥 db1db2 여기에 두 개의 테이블을 호출합니다 :

성명은 다음 예 ... 나를 위해 일한 존재

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

입니다. sqlite3에 대한 주요 문제는 db2 T에서 삭제와 같은 별칭 이름을 부여 할 수 없었습니다. 나는 존재하는 곳을 사용해야했습니다 .... 해결책을 가져 주셔서 감사합니다. – Nasir

관련 문제