2011-01-20 19 views
5

これには1つ以上の質問がありますが、これは比較的新しいものです。サブクエストを使用してこの作業を行うことはできません。 USINGキーワード、さらに私はmysqlのオンライン文書を完全な謎だと思っています。mysqlのクエリを削除すると参加できない

私は私のベースとしてSELECTクエリを使用して、私のDELETEクエリを構築しようとし始めたと私は削除したいすべての行を取得することができた:

select * 
from writings_tags_link 
join writing_tags on writing_tags.id = writings_tags_link.tag_id 
where writing_tags.tag = 'tag one' 

してからちょうどそうDELETEですべての選択を置き換えます:

delete 
from writings_tags_link 
join writing_tags on writing_tags.id = writings_tags_link.tag_id 
where writing_tags.tag = 'tag one' 

私は、エラーメッセージの両方から収集し、あなたが削除クエリでテーブルを結合するために「on」に使用することはできません他の類似の記事から、あなたは、サブクエリを使用するか、または使用する必要があります。

DELETE 
FROM writings_tags_link 
USING writing_tags_link INNER JOIN writing_tags 
WHERE writing_tags.id = writings_tags_link.tag_id 
AND writing_tags.tag ='tag one' 

エラー:私は返します、本当に奇妙なエラー、最初のクエリ使用して構築されたクエリ

#1109 - Unknown table 'writings_tags_link' in MULTI DELETE 

このテーブルが存在しないが、明らかに、私のオリジナル選択クエリは、所望の結果を返しました。どんな助け/説明も非常に高く評価されるでしょう!

リンクテーブルのデータだけを削除しようとしていますので、ご注意ください。

答えて

8

あなたの情報を使用する場合にJOINのDELETE構文でUSINGキーワードの使用を必要とする程度正しくない - documentation provides examples in the multi-delete section

DELETE wtl 
    FROM WRITINGS_TAGS_LINK wtl 
    JOIN WRITING_TAGS wt ON wt.id = wtl.tag_id 
WHERE wt.tag = 'tag one' 
+1

は、私が見ああ、私は削除するものを追加しませんでした!私が言ったように、私は学んでいます:)ありがとう、OMGポニー! – JoeM05

+0

これは私のnooberyでも私を助けました:) –

関連する問題