📖

【Oracle SQL】ON句を使用した結合について

2024/03/20に公開

Oracle SQLに触りはじめた初心者の学習振り返りです。

ON句とは

JOIN句を使用して2つのテーブルを結合する際、ON句はそれぞれのテーブルのどの列を基準に結合するかを指定します。この基準となる列は通常、両方のテーブルに存在し、一致する値を持つことが多いです。

JOIN句とは

2つ以上のテーブルからデータを結合するために使用されます。これにより、複数のテーブルに分散して格納されているデータを一元化して取得することが可能になります。

ON句を使用した結合の例

ON句を使用した結合の例
SELECT table1.column1, table2.column2
FROM table1
JOIN table2
ON table1.common_column = table2.common_column;

例の解説
この例では、table1table2を結合しています。結合の基準となるのはcommon_columnで、この列が両方のテーブルに存在し、その値が一致するレコードが結合されます。

Oracle SQLにおけるON句の特徴について

  • 結合条件の指定:
    ON句は、JOIN句を使用してテーブルを結合する際に、どのレコードを結合するかを指定するために使用されます。
  • 複数の条件の指定:
    ON句では、複数の条件を指定することが可能です。これにより、より複雑な結合条件を作成することができます。下記のように書くこともできます。
ON table1.column1 = table2.column1 AND table1.column2 = table2.column2
  • 任意の比較演算子の使用:
    ON句では、等価性(=)だけでなく、他の任意の比較演算子(<、>、<=、>=、<>)を使用することが可能です。
  • 関数の使用:
    ON句の中では、関数を使用することが可能です。これにより、結合条件をさらに柔軟に指定することができます。
  • サブクエリの使用:
    ON句の中では、サブクエリを使用することが可能です。これにより、結合条件を動的に生成することができます。

ON句とWHERE句の違い

それぞれの目的について

ON句

2つ以上のテーブルを結合する際に、どの列を基に結合するかを指定するために使用されます。JOIN句と一緒に使用されます。

SELECT *
FROM employees JOIN departments
ON employees.department_id = departments.department_id;

上記SQL文は、employeesテーブルとdepartmentsテーブルをdepartment_id列を基に結合します。

WHERE句

データをフィルタリングするために使用されます。SELECT文でデータを取得する際に、特定の条件を満たすレコードだけを取得したい場合にWHERE句を使用します。

SELECT *
FROM employees
WHERE salary > 50000;

上記SQL文は、employeesテーブルから給与が50000以上のレコードだけを取得します。

まとめ

ON句で指定された条件は結合の基準として機能し、結合前のデータで条件による絞り込みが行われます。
一方、WHERE句で指定された条件は、結合後のデータで条件による絞り込みが行われます。

参考

https://oracle.programmer-reference.com/sql-join-on-where/
https://zenn.dev/miya_tech/articles/db8b12d94116fd
https://style.potepan.com/articles/26226.html

Discussion