Deleting rows from SQLite table when no match exists in another table

后端 未结 2 1562
刺人心
刺人心 2020-12-08 14:30

I need to delete rows from an SQLite table where their row IDs do not exist in another table. The SELECT statement returns the correct rows:

SELECT * FROM ca         


        
相关标签:
2条回答
  • 2020-12-08 15:06

    Since you going down the route of subquery, might as well get rid of the join altogether and simplify the query:

    DELETE FROM cache WHERE id NOT IN (SELECT id from main);
    
    0 讨论(0)
  • 2020-12-08 15:26

    SQLite apparently doesn't support joins with the delete statement, as you can see on the Syntax diagrams. You should however be able to use a subquery to delete them.

    ie.

    DELETE FROM cache WHERE id IN
    (SELECT cache.id FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL);
    

    (Not tested)

    0 讨论(0)
提交回复
热议问题