2017-01-14 2 views
0

Meine Tabelle enthält 2 INTEGER Primärschlüssel Spalten. Ich möchte mehrere Datensätze mit beiden angegebenen löschen. Zum Beispiel (1,1) und (1,2). Ich habe versucht:SQLite DELETE mehrere Datensätze mit angegebenen zusammengesetzten Primärschlüssel

DELETE FROM my_table WHERE(primarykey1,primarykey2) IN ((1,1),(1,2)) 

falsche Syntax.

+0

Es ist wahrscheinlich einfacher, zwei verschiedene Delete-Anweisungen zu verwenden. Wie auch immer, SQLite hat keine "Tupel", also '(primarykey1, primarykey2)' ist kein Ausdruck. –

+0

Was ist, wenn es 2000 Löschanweisungen gibt? Zwei - war nur ein Beispiel. –

+0

Im Code können Sie eine Löschanweisung mit Abfrageparametern für jeden Schlüssel vorbereiten, den Sie löschen, und dann verschiedene Werte an diese Parameter in einer Schleife binden. –

Antwort

0
DELETE FROM my_table WHERE primarykey1 = 1 AND primarykey2 IN (1,2) 
1

Da SQLite-Version 3.15, können Sie die folgende Syntax verwenden:

DELETE FROM my_table WHERE (p1, pk2) IN (VALUES(1,1),(1,2)); 
+0

Funktioniert nicht mit Qt 5.7.1. :( –

+0

Haha :) Ich habe mit Keywords in Ihrer Antwort gegoogelt und ich habe eine :) –

+0

(http://stackoverflow.com/questions/14691483/how-to-delete-several-values-in-sql) –

Verwandte Themen