CTEとJOINを使った効率的なSQL処理の手法

SQLではデータの取得や更新、削除など多くの操作が可能ですが、特にCTE(Common Table Expressions)とJOINはデータ処理において非常に効率的な手法とされています。この記事では、CTEとJOINの基本から応用までを詳しく解説します。具体的なデータテーブルとコード例を交えて、実際の運用でどのように活用できるのかを見ていきましょう。

目次

CTE(Common Table Expressions)とは

CTEは、WITH句を使って一時的な結果セットを生成するSQLの機能です。サブクエリやビューと似たような働きをしますが、より読みやすく、再利用可能なコードを書くために用いられます。

基本的なCTEの書き方

WITH temporary_table AS (
SELECT column1, column2 FROM table1
)
SELECT * FROM temporary_table;
column1column2
Data1Data2
CTEの基本的な出力例

CTEの応用:階層データの処理

CTEは階層データを扱うのに特に有用です。以下のように、親子関係のデータを再帰的に処理することができます。

WITH RECURSIVE organization AS (
SELECT id, name, parent_id FROM companies WHERE parent_id IS NULL
UNION ALL
SELECT c.id, c.name, c.parent_id FROM companies c
JOIN organization o ON c.parent_id = o.id
)
SELECT * FROM organization;
IDNameParent_ID
1Company ANULL
2Division A1
階層データのCTE出力例

JOINとは

JOINは、複数のテーブルからデータを結合して取得するSQLの命令です。INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINなどがあり、用途に応じて選びます。

基本的なJOINの書き方

SELECT a.column1, b.column2 FROM table1 a
INNER JOIN table2 b ON a.id = b.id;
column1column2
Data1Data2
JOINの基本的な出力例

JOINの応用:複数テーブルの結合

2つ以上のテーブルを結合する場合もあります。このような場合、以下のように記述できます。

SELECT a.column1, b.column2, c.column3 FROM table1 a
INNER JOIN table2 b ON a.id = b.id
INNER JOIN table3 c ON b.id = c.id;
column1column2column3
Data1Data2Data3
複数テーブル結合の出力例

CTEとJOINを組み合わせた使用例

CTEとJOINを組み合わせることで、より複雑なデータ処理を行うことが可能です。

WITH customer_data AS (
  SELECT id, name FROM customers WHERE status = 'active'
)
SELECT c.id, c.name, o.total_amount FROM customer_data c
INNER JOIN orders o ON c.id = o.customer_id;
IDNameTotal_Amount
1John1000
2Mary2000
CTEとJOINを組み合わせた出力例

まとめ

CTEとJOINはそれぞれに強力な機能を持っていますが、組み合わせることでさらに強力なデータ操作が可能になります。この記事で学んだ基本的な使用法から応用例まで、ぜひ実際のデータ処理で活用してみてください。

コメント

コメントする

目次