2016-04-14 7 views
0

chart_idが1の両方のテーブルのすべての行を削除したいが、それはうまく動作せず、理由が分からない。mysqlのINNER JOINを使用して2つのテーブルから行を削除するには?

DELETE `cms_module_charts` 
FROM `cms_module_charts` 
INNER JOIN `cms_module_charts_kategorie` 
ON `cms_module_charts_kategorie`.`chart_id`=`cms_module_charts`.`chart_id` 
WHERE `chart_id`= 1 

これはエラーです。 予期しない文字です。私はあなたが使用する必要があります内のデータベース・スキームを考える

DELETE FROM (`cms_module_charts` INNER JOIN `cms_module_charts_kategorie` 
ON `cms_module_charts_kategorie`.`chart_id`=`cms_module_charts`.`chart_id`) 
WHERE `chart_id`= 1 

答えて

0

DELETE t1, t2 
    FROM t1 INNER JOIN t2 INNER JOIN t3 
    WHERE t1.id=t2.id AND t2.id=t3.id; 

OR

DELETE 
    FROM t1, t2 
USING t1 INNER JOIN t2 INNER JOIN t3 
WHERE t1.id=t2.id AND t2.id=t3.id; 

新しい、好ましくは、JOIN標準が受け入れ可能であると私は考えているように、私もそれが見えますなぜあなたの質問が不平を言っているのですか?あなたはあなたの質問に奇妙な文字を持っていないと確信していますか?

0

標準のSQL構文はDELETEFROM

の間に何もbutspaceせず、DELETE FROMであることは、これを試してみてくださいON DELETE CASCADEの場合、行を削除すると参照が削除されますが、結合を使用して削除すると意味がありません。あなたは簡単にこれを行うことができますように見えるMySQL Docsから

+0

誤っていますが、オプションのマルチテーブル構文があります。ドキュメントを見てください。 – Arth

+0

@Arth SQL標準では、この構文を使用する必要があります!!多分mySQLはオプションの構文を提供していますが、このケースでは非推奨です... – Vincent

+0

うーん、私はそれが廃止されていないと確信しています。構文が* blah *であることを明確にしていないだけで誤解を招くことはありません。 – Arth

0

:(7位の "cms_module_charts" に近い)

関連する問題