在三个表中查找孤立的行

时间:2011-08-25 23:33:37

标签: database entity-relationship maintenance

我的树表与文章结构有标记关系。

树表是

1. tagnames_with_id
2. tag_id_relationship_with_article_id
3. article_with_id

现在,有时当文章被删除时,文章的标签的关系也会被删除,但现在麻烦的是,有时当转换未正确完成时,表格中的数据没有被使用。

  1. 如何找到关系中不存在的所有标记ID 表但在标签表中删除它们?这些是标签 关系已被删除。

  2. 如何找到关系表中的所有标记ID 但不是在标签表中删除它们?这些是标签 已被删除,但他们的关系仍然存在。

  3. 如何找到关系中的所有文章ID,但是 不在文章表中?这些是与标签的关系 已删除但仍与其标签关系相关的文章 存在。

  4. 由于

2 个答案:

答案 0 :(得分:4)

以下是这个问题的一般答案:

select * from child_table
where parent_id not in (select id from parent_table)

此语法适用于我所知道的每个数据库

答案 1 :(得分:0)

与波西米亚人的答案类似,但使用存在:

select * from child_table where not exists 
(select null from parent_table where child_table.parent_id = parent_table.id)