使用join to link table从SQLite表中删除

时间:2015-02-05 07:24:51

标签: android sql sqlite

我有这些表格:

项目:

+ _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上运行它。

1 个答案:

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

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