SQL の JOIN 種類を正しく使い分ける
INNER、LEFT、RIGHT、FULL、CROSS の各 JOIN は複数テーブルの行を結合します。それぞれを使うべき場面と、よくある落とし穴の回避方法を学びましょう。
- 1
JOIN の種類:INNER (マッチする行のみ)、LEFT (左側の全行 + マッチする右側、非マッチは NULL)、RIGHT (右側の全行 + マッチする左側)、FULL (両方の全行、非マッチは NULL)、CROSS (直積) です。最もよく使われるのは INNER と LEFT です。RIGHT はほとんど使われません (LEFT に書き換え可能)。CROSS は組み合わせの生成に使います。
- 2 SQL フォーマッター →
JOIN を含むクエリを整形して、結合条件を検証します。ON 句の欠落 (CROSS JOIN を除く) はよくあるエラーです。整形すると結合構造が見えるようになります。どのテーブルが、どの種類で、どんな条件で結合されているか。可読性のため、テーブルには別名を使ってください。
- 3 sql-format → word-count
SQL 整形ワークフローを使って、複数の JOIN を含む複雑なクエリを整形します。別名とインデントが一貫し、結合ロジックが明確になってデバッグしやすくなります。
よくある質問
- INNER JOIN と LEFT JOIN の違いは?
- INNER JOIN は両方のテーブルでマッチする行だけを返します。LEFT JOIN は左テーブルの全行を返し、右テーブルの非マッチ列は NULL になります。マッチだけが欲しい場合は INNER を、マッチの有無にかかわらず左側の全行が欲しい場合 (例:すべてのユーザーと、あればその注文) は LEFT を使ってください。
- 3 つ以上のテーブルを結合できますか?
- はい。JOIN を連鎖させます:SELECT * FROM a JOIN b ON a.id = b.a_id JOIN c ON b.id = c.b_id。JOIN 1 つごとにテーブルが 1 つ増えます。結合順序はオプティマイザーが決定しますが、先頭に置くテーブルでヒントを出せます。LEFT JOIN には注意してください。NULL の伝播において順序が重要になります。
このタスクを解決するワークフロー
SQL フォーマットと単語統計によるドキュメント化
SQL クエリを整形し、その後フォーマットされた出力を単語統計で分析する。 パイプライン
Lorem Ipsum 生成と単語カウント
Lorem Ipsum テキストを生成し、その後単語をカウントする。 パイプライン
SQL フォーマットと構文検証
SQL クエリをフォーマットし、その後構文を検証する。 パイプライン
テキストのクリーンアップ後の単語統計分析
テキストをトリムして正規化し、その後単語/文字/行統計を計算する。 パイプライン
行の重複除去と単語カウント
行をソートして重複を除去し、その後残りの単語をカウントして簡単な在庫を得る。 パイプライン
テキストの小文字化と単語カウント
テキストのケースを正規化し、その後分析のために単語をカウントする。 パイプライン
URL 除去と単語カウント
テキストから URL を除去し、その後残りの単語をカウントする。 パイプライン
Title Case と単語カウント
Title Case に変換し、その後単語をカウントする。 パイプライン
テキストの折り返しと単語カウント
長いテキストを折り返し、その後結果の単語をカウントする。 パイプライン
関連ツール
SQL フォーマッター
Beautify or minify SQL queries online. Uppercase keywords, indent clauses, or compress to a single line。無料、プライベート、100%クライアントサイド。 ツール
テーブル編集&変換ツール
Edit tabular data and export to CSV/JSON/HTML/Markdown。無料、プライベート、100%クライアントサイド。 ツール
JSON バリデーター
Validate JSON and pinpoint syntax errors by line and column。無料、プライベート、100%クライアントサイド。 ツール