从 SQLite table 中删除并加入 link table

Delete from SQLite table with join to link table

我有这些 table:

项:

+ _id
+ timestamp

项目列表:

+ _id
+ timestamp

链接table:

+ _id
+ item_id foreign key references items(_id)
+ item_list_id foreign key references item_list(_id)

一个项目可以在多个列表中。一个列表可以包含很多项。这是一个多对多的关系。

我现在想删除一个项目列表和其中的所有项目,如果它们对于该列表是唯一的。但是我不想从项目 table 中删除任何项目,如果它们也在另一个列表中。

我可以检索特定播放列表的所有项目:

items a inner join item_list b on a._id = b.item_id where item_list_id = ?

但我正在努力解决如何为特定列表及其项目构建删除,而不删除也被另一个未删除的列表引用的项目。

非常感谢任何正确方向的指示。

我 运行 在 SQLite 上 Android。

首先,删除列表:

DELETE FROM itemlists WHERE _id = ?;

然后删除它所有的link:

DELETE FROM linktable WHERE item_list_id = ?;

然后删除所有没有 link 剩余的项目:

DELETE FROM items WHERE _id NOT IN (SELECT item_id FROM linktable);

在一次交易中完成所有这些。