[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]