54

重複の可能性:
MySQL ON と USING?

クエリ 1:

SELECT *
FROM users
JOIN orders ON (orders.user_id = users.user_id)
WHERE users.user_id = 1;

クエリ 2:

SELECT *
FROM users
JOIN orders USING (user_id)
WHERE user_id = 1;

注文とユーザーのテーブルを結合して、特定のデータを取得したいと考えています。それは正常に動作します。私の問題は、両方のクエリが同じ結果セットを出力するため、同じですか? どっちを使えば効率いい?どれがパフォーマンスに適していますか? どれがベストプラクティスですか?

4

1 に答える 1

63

この句は、複数のテーブルからデータを取得する場合USING、条件で言及する必要がないものです。JOIN句を使用するUSING場合、その特定の列名が両方のテーブルに存在する必要があり、SELECTクエリは句で指定された列名を使用してこれらのテーブルを自動的に結合しますUSING

たとえば、テーブルに 2 つの共通の列名がある場合は、USING句で目的の共通の列名を指定します。

USING次のように、動的 SQL の実行中にも使用されます。

EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'
  USING dept_id; 
  • 句: これにより、USING結合キーを名前で指定できます。

  • 句:このON構文を使用すると、両方のテーブルの結合キーの列名を指定できます。

USING句

このUSING句は、複数の列が同じ名前を共有しているが、これらの共通の列をすべて使用して結合したくない場合に使用されます。USING 句にリストされている列は、WHERE 句を含め、ステートメントに修飾子を含めることはできません。

ON句

このON句は、列名が両方のテーブルで一致しないテーブルを結合するために使用されます。結合条件は、WHERE 句のフィルター条件から削除されます。

于 2012-12-06T18:47:05.560 に答える