【问题标题】:How to delete a rows with list of primary keys in sqlite如何在sqlite中删除带有主键列表的行
【发布时间】:2016-04-24 20:29:34
【问题描述】:

在 SQL 中:

delete from table where (pk1,pk2) IN (('1',2),('2',3))

sqlite 中的类似语法是什么?

【问题讨论】:

    标签: sqlite delete-row


    【解决方案1】:

    由于 Sqlite 似乎不支持 IN 成对查询,因此您可以做的最直接和可读的查询可能是(添加括号以提高可读性);

    DELETE FROM table WHERE (pk1='1' AND pk2=2) OR (pk1='2' AND pk2=3)
    

    【讨论】:

      【解决方案2】:

      一种可能是使用相关查询:

      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);
      

      SqlFiddleDemo

      【讨论】:

      • 如果用户必须删除数千行怎么办?
      • @saimadan 然后他需要添加更多对。与使用IN 或多个AND OR 条件相同。无论如何,删除数千个巴黎可能他可以使用BETWEEN/>/< 运算符更简洁地编写条件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      相关资源
      最近更新 更多