MySQL删除所有带有废弃ID的行

时间:2013-09-09 18:20:00

标签: mysql

在我的数据库中,我有三个表:一个包含单词(word_id,word),另一个包含类别(cat_id,cat_name),第三个表为所有单词分配类别(word_id,cat_id)(每个单词一个或多个类别) 。

是否可以使用word表中当前不存在的word_id删除categories-to-words-table中的所有行?

3 个答案:

答案 0 :(得分:4)

是的,使用这个:

DELETE FROM categories_to_words
WHERE word_id NOT IN (SELECT word_id FROM words);

有更有效的方法可以做到这一点,但这样做会有效。

但是:你应该真正使用外键进行调查,因为如果你使用它们,你就不会遇到像你现在正在解决的那样的问题。

答案 1 :(得分:1)

最直接的方式是翻译你的句子:

delete from categories2words
    where word_id not in (select word_id from words);

答案 2 :(得分:1)

试试这个: -

Delete from categories2words
where word_id not in (select word_id from words);