データベース PR

SQLのJOIN: ONとUSINGの違いを徹底解説!

記事内に商品プロモーションを含む場合があります

データベースを使うときに、
複数のテーブルから情報を引き出して
組み合わせる方法として「JOIN」があります。

JOINはSQLの基本ですが、
ON句とUSING句の使い方には違いがあります。

本記事では、
これらの違いを初心者でもわかりやすく、
具体的な例を使って解説します。

SQL JOINとは?

まず、JOINが何なのかを簡単に理解しましょう。

JOINは、2つ以上のテーブルから
関連するデータを結びつけて
1つの結果として表示する仕組みです。

たとえば、
「顧客情報のテーブル」と
「注文情報のテーブル」を持っていた場合、
JOINを使えば、
顧客が何を注文したかを一覧で見ることができます。

JOINの種類とその使い方

JOINにはいくつかの種類がありますが、
今回は基本的な4つを紹介します。

  • INNER JOIN
    2つのテーブルに共通するデータだけを取り出します。
  • LEFT JOIN
    左側のテーブルの全てのデータを取り出し、
    右側にない部分は空になります。
  • RIGHT JOIN
    右側のテーブルの全てのデータを取り出し、
    左側にない部分は空になります。
  • FULL JOIN
    両方のテーブルに存在するデータをすべて表示します。

これらのJOINを使いこなすことで、
複数のテーブルから必要なデータを
柔軟に取得できるようになります。

ON句とUSING句の違いとは?

JOINを行うときには、
「どの列を使ってテーブルを結びつけるか」を
指定する必要があります。

これを指定するのがON句USING句です。
この2つは、似たような役割を持っていますが、
使い方に違いがあります。

それぞれの使い方と特徴を見ていきましょう。

ON句の使い方

ON句は、
異なる列名を持つテーブルを
結合する際に使われます。

たとえば、以下のように、
顧客テーブルのcustomer_idと注文テーブルのidが異なる名前でも、
ON句を使えば簡単に結合できます。

SELECT customers.name, orders.total_amount
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.id;


このように、ON句を使えば、
異なる名前の列同士を結びつけることができるため、
複雑な結合条件を柔軟に扱えます。

USING句の使い方

一方、USING句は、
共通する列名がある場合に使います。

つまり、2つのテーブルに同じ名前の列がある場合、
この句を使うことで簡単に等価結合が可能です。

たとえば、顧客テーブルと注文テーブルの両方に
customer_idという共通の列があるとします。

このとき、USING句は非常に便利です。

SELECT customers.name, orders.total_amount
FROM customers
INNER JOIN orders
USING (customer_id);


USING句を使うと、
共通の列だけを指定するだけで結合ができ、
結果にはcustomer_idが1度しか表示されません。
重複する列を削除し、すっきりとした結果が得られます。

ON句を使うべき場合

ON句は、特に以下のような状況で役立ちます。

  • 異なる列名を持つテーブルを結合したい場合
  • 複数の結合条件が必要な場合

例えば、顧客の名前や注文のステータスなど、
複数の条件で結合したい場合、ON句は便利です。

SELECT customers.name, orders.total_amount
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.id
AND orders.status = 'shipped';

USING句を使うべき場合

USING句は、以下のような状況で使うのが適しています。

  • 共通の列名が1つだけあり、シンプルな結合を行いたい場合
  • 重複列を避けて、すっきりとした結果が欲しい場合

たとえば、顧客のIDが共通していて、重複を避けたい場合に便利です。

SELECT customers.name, orders.total_amount
FROM customers
LEFT JOIN orders
USING (customer_id);

このように、結合結果がコンパクトにまとまります。

結合後の列数と可読性について

USING句を使うと、
共通する列名は1つしか表示されないため、
結合後の列数が減少し、結果が読みやすくなります。

一方、ON句では結合後に
両方のテーブルの列が表示されることがあり、
重複列が増える可能性があります。

これがコードの可読性や保守性に影響することがあるため、
シンプルなケースではUSING句の使用をおすすめします。

結論: ONとUSING、どちらを使うべきか?

ON句とUSING句にはそれぞれ強みがあり、
状況によって使い分けることが重要です。

  • ON句は、複数の結合条件や異なる列名を扱いたい場合に便利です。
  • USING句は、共通する列名が1つだけある場合や、
    シンプルで見やすい結果を求める場合に使うのが適しています。

まとめ

本記事では、
SQLのJOIN文で使われる
ON句とUSING句の違いについて説明しました。

最初は難しく感じるかもしれませんが、
これらの違いを理解すれば、
複数のテーブルから効率的に
データを取り出せるようになります。

初心者でも使いこなせるように、
まずはシンプルな例から始めて、慣れていきましょう!