mysql:13444
From: "Kenta Hashimoto" <"Kenta Hashimoto" <kem@xxxxxxxxxx>>
Date: Wed, 1 Nov 2006 16:07:13 +0900
Subject: [mysql 13444] joinの順番
橋本と申します。 MySQL5.0.12以降では、JOIN の順番が変わったんですね。 http://dev.mysql.com/doc/refman/5.0/en/join.html 弊社のDBをMySQL4 から MySQL5 にアップグレードしたのですが、 一部のクエリでエラーが出るようになりました。 皆様ご存知かもしれませんが、 同じような場所でつまずく方がいらっしゃるかと思いますので、共有します。 以下のようなクエリは、MySQL5.0.12 以降では、エラーになります。 SELECT a.id FROM a , b , c LEFT JOIN d ON b.id = d.b_id AND d.c_id = 2 WHERE a.id = 1 AND a.b_id = b.id AND b.c_id = c.id 以下のように直したら、期待した動きをしました。 SELECT a.id FROM a INNER JOIN b ON a.b_id = b.id INNER JOIN c ON b.c_id = c.id LEFT JOIN d ON b.id = d.b_id AND d.c_id = 2 WHERE a.id = 1 また、以下のように直すとOK らしいです。 SELECT a.id FROM ( a,b,c ) LEFT JOIN d ON b.id = d.b_id AND d.c_id = 2 WHERE a.id = 1 AND a.b_id = b.id AND b.c_id = c.id -- 橋本健太 世界最大級の料理コミュニティ 「クックパッド」 - http://cookpad.com 企画運営アシスタント、デザイナー、大募集中! - http://cookpad.com/jobs/