【发布时间】:2016-04-24 20:29:34
【问题描述】:
在 SQL 中:
delete from table where (pk1,pk2) IN (('1',2),('2',3))
sqlite 中的类似语法是什么?
【问题讨论】:
标签: sqlite delete-row
在 SQL 中:
delete from table where (pk1,pk2) IN (('1',2),('2',3))
sqlite 中的类似语法是什么?
【问题讨论】:
标签: sqlite delete-row
由于 Sqlite 似乎不支持 IN 成对查询,因此您可以做的最直接和可读的查询可能是(添加括号以提高可读性);
DELETE FROM table WHERE (pk1='1' AND pk2=2) OR (pk1='2' AND pk2=3)
【讨论】:
一种可能是使用相关查询:
WITH cte(p1, p2) AS(
VALUES ('1',2)
UNION ALL VALUES ('2', 3)) -- add more pairs if needed
DELETE FROM tab
WHERE EXISTS (SELECT 1 FROM cte WHERE pk1 = p1 AND pk2 = p2);
【讨论】:
IN 或多个AND OR 条件相同。无论如何,删除数千个巴黎可能他可以使用BETWEEN/>/< 运算符更简洁地编写条件。