2011-06-14 2 views
3

다른 테이블에 해당 ID가없는 한 테이블의 모든 행을 삭제하려고합니다. 분명히 때문에 SQLite는 내가이 라인을 따라 뭔가를 시도하고 삭제 조인을 지원하지 않습니다 : 그것은 커서를 반환하기 때문에Android 삭제 쿼리

DELETE FROM my_table WHERE my_id NOT IN (SELECT _id FROM my_table2); 

그러나, 나는 분명히 삭제 기능을 사용 rawQuery를 내가 한 사용할 수 없습니다. 이 문제를 해결하는 데 문제가 있습니다. 다음은 내가 시도하는 쿼리입니다.

mDb.delete("my_table", "my_id NOT IN ?", new String[]{"(SELECT _id FROM my_table2)"}); 

감사합니다.

답변

22

명시된대로 .rawQuery를 사용하지 말고 .execSQL()을 사용하여 수행 할 수 있습니다. 나는 정기적으로 그것을 삭제에 사용한다.

+0

완벽한 ... 두려움! 그것은 트릭을했다. – Nick

+0

@mah 당신은 삭제를 위해 .execSQL을 사용하는 방법을 설명 할 수 있습니까? 나는 그것이 나에게 오류를 던져 봤는데 .Plz – Rauf

+0

작품 .. 고마워 .. –

1

유일한 방법은 선택을 실행하고 동적으로 WHERE 절을 결합하는 것입니다.