我有这些表格:
项目:
+ _id
+ timestamp
的项目列表:
+ _id
+ timestamp
linktable:
+ _id
+ item_id foreign key references items(_id)
+ item_list_id foreign key references item_list(_id)
项目可以在许多列表中。列表可以包含许多项目。这是一种多对多的关系。
我现在想要删除项目列表及其中的所有项目(如果它们对于该列表是唯一的)。但是,我也不想删除项目表中的任何项目,如果它们也在另一个列表中。
我可以检索特定播放列表的所有项目:
items a inner join item_list b on a._id = b.item_id where item_list_id = ?
但我正在努力解决如何为特定列表及其项目构建删除,而不删除也被另一个未删除列表引用的项目。
任何指向正确方向的人都会受到高度赞赏。
我在Android上的SQLite上运行它。
答案 0 :(得分:1)
首先,删除列表:
DELETE FROM itemlists WHERE _id = ?;
然后删除其所有链接:
DELETE FROM linktable WHERE item_list_id = ?;
然后删除所有没有链接的项目:
DELETE FROM items WHERE _id NOT IN (SELECT item_id FROM linktable);
在一次交易中完成所有这些。