2012-03-13 5 views
1

私は2つのクエリを1つで削除しようとしています。たとえば、次のように表にcommentsarticle_id 4でレコードを存在する場合はうまく動作しますが、articlesarticlesレコードを削除しませんMySQLの複数テーブルの削除の構文

DELETE `articles`, `comments` 
FROM `articles` INNER JOIN `comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4 

DELETE FROM `comments` WHERE `article_id` = 4; 
DELETE FROM `aricles` WHERE `id` = 4; 

私は、単一のクエリを使用してみました。 id = 4、commentsのレコードの場合article_id = 4が見つかりません。それを行う方法はありますか?

+2

を使用しますあなたは本当に制約を見なければなりません。 http://stackoverflow.com/questions/3433975/why-use-foreign-key-constraints-in-mysql – Rufinus

答えて

4

これはそれを行うだろう -

DELETE `articles`, `comments` 
FROM `articles` 
LEFT JOIN `comments` 
    ON `articles`.`id` = `comments`.`article_id` 
WHERE `articles`.`id` = 4; 
+0

これは、 'comments'を持たない' articles'も削除します。これは質問にもっと正確に答えます。 – sulai

1

次のことを試してみてください。

DELETE FROM `articles`, `comments` 
USING `articles` INNER JOIN `comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4 
+0

これは 'comments'を持たない' articles'を削除しません。 – sulai

0

この

DELETE FROM `articles`, `comments` 
USING `articles`,`comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4 

または

DELETE `articles`, `comments` 
FROM `articles`, `comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4 
関連する問題