从 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);
在一次交易中完成所有这些。
我有这些 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);
在一次交易中完成所有这些。