如果其他表中缺少相关数据,请从表中删除项目?

时间:2015-03-22 07:42:51

标签: mysql

现在可以轻松地从多个表中添加。

但我正在寻找一种方法来根据其他人的缺乏选择性地从表中删除行。

如果说.. Table_Important
(ID,ImportantValue,其他,东西,没人,关心,关于)


我想删除 ImportantValue 中没有出现的所有行 Table_Remembering in colum CouldBeImportant
也不是 表_忘记列 WasThatImportant


到目前为止,我一直在使用连接来查找它发生的实例,并将它们插入临时表,删除原始文件,重新创建它,然后将临时表复制到其中,并删除它。

它很慢,当然也不是最好的方法。

2 个答案:

答案 0 :(得分:0)

听起来像几个exists运营商:

DELETE 
FROM   table_important i
WHERE  NOT EXISTS (SELECT *
                   FROM   table_remembering r
                   WHERE  i.important_value = r.could_be_important) AND 
       NOT EXISTS (SELECT *
                   FROM   table_forgetting f
                   WHERE  i.important_value = f.was_that_important)

答案 1 :(得分:0)

由于OP没有公开实际结构,只有一般性提示:

DELETE FROM a WHERE 
    NOT EXISTS (SELECT b.key FROM b where b.key = a.key) 
    AND NOT EXISTS (SELECT c.key FROM c where c.key = a.key)