2

MySQL の 2 つのスニペット:

SELECT * FROM annoyingly_long_left_hand_table 
    LEFT JOIN annoyingly_long_right_hand_table 
    ON annoyingly_long_left_hand_table.id = annoyingly_long_right_hand_table.id;

SELECT * FROM annoyingly_long_left_hand_table 
    LEFT JOIN annoyingly_long_right_hand_table 
    USING (id);

両方のテーブルにidフィールドがある場合、2 番目のバージョンを使用することに不利な点はありますか。それは単なる怠惰ではありません。USING を使用したバージョンの方がはるかに明確に思えます。

(エイリアシングについては言及しないでください。ある条件付き構造を他の条件付き構造より優先する理由があるかどうか知りたいです)

4

2 に答える 2

6

2 つの ID 列を取得するのではなく、1 つだけを取得するという点で、2 つの機能には小さな違いがあります。

SELECT * FROM foo JOIN バー ON ( foo.id == bar.id )

id、fooname、id、バー名

SELECT * FROM foo JOIN bar USING ( id )

id、fooname、barname

したがって、この構文を使用するユーザーには、少なくともいくつかの追加の知識が必要です。http://dev.mysql.com/doc/refman/5.0/en/join.html

于 2008-11-21T09:14:56.797 に答える
1

USING汎用ON句よりも柔軟性が少し劣ります。

  • 両方のテーブルの列は同じ名前である必要があります。

  • 比較は等しい必要があります。

  • クエリ内の他のテーブルに同じ名前の列を含めることはできません。

于 2009-09-29T16:25:39.317 に答える