JOINキーワードを使用したMySQL内部結合(INNER JOIN)クエリの書き方
MySQLにおける内部結合(INNER JOIN)のクエリは、JOINキーワードを使って記述することもできます。通常「INNER JOIN」と書くところを、単に「JOIN」とするだけで同じ意味になります。ここでは、以下のようなデータを持つ2つのテーブル「tbl_1」と「tbl_2」を例に、その使い方を解説します。
サンプルテーブルのデータ
まず、結合に使用する2つのテーブルの中身を確認しておきましょう。
mysql> Select * from tbl_1; +----+--------+ | Id | Name | +----+--------+ | 1 | Gaurav | | 2 | Rahul | | 3 | Raman | | 4 | Aarav | +----+--------+ 4 rows in set (0.00 sec) mysql> Select * from tbl_2; +----+---------+ | Id | Name | +----+---------+ | A | Aarav | | B | Mohan | | C | Jai | | D | Harshit | +----+---------+ 4 rows in set (0.00 sec)
JOINキーワードによる内部結合クエリ
次のクエリでは、キーワードJOINを使用して、2つのテーブルを内部結合しています。
mysql> Select tbl_1.id,tbl_2.id FROM tbl_1 JOIN tbl_2 ON tbl_1.name = tbl_2.name; +----+----+ | id | id | +----+----+ | 4 | A | +----+----+ 1 row in set (0.00 sec)
実行結果のポイント
この結果からわかるように、「Aarav」という名前は両方のテーブルに存在しているため、その行だけが結合されました。これが内部結合の特徴で、両方のテーブルに一致するデータが存在する行のみが結果として返されます。
ON句による結合条件の指定
上記のクエリでは、結合条件(結合述語)をONキーワードの後に記述しています。つまり「tbl_1.name = tbl_2.name」という条件に一致する行同士が結合される仕組みです。
なお、JOINと書いてもINNER JOINと明示的に書いても、MySQLではまったく同じ動作になります。コードの可読性やチーム内のコーディング規約に応じて、どちらの表現を使っても問題ありません。
-
MySQLでIDが最大の行を取得する方法:ORDER BYとLIMIT OFFSETの活用テクニック
MySQLでIDが最も大きい(最大値の)行を取得したい場面は多くあります。例えば、最新のレコードや直近に登録された従業員情報を取り出すケースなどが該当します。そんなときに役立つのが、ORDER BY句とLIMIT OFFSETを組み合わせた手法です。基本構文IDの降順に並べ替え、先頭の1行だけを取得することで、IDが最大の行を選択できます。構文は以下の通りです。SELECT * FROM テーブル名 ORDER BY カラム名 DESC LIMIT 1 OFFSET 0;ORDER BY 〜 DESCで降順ソートを行い、LIMIT 1 OFFSET 0で最初の1行のみを返します。OFFSETを
-
MySQLでNULLの値を検索・取得する方法:IS NULL演算子の使い方
MySQLでは、NULLが格納されているレコードを取得したい場合、通常の比較演算子(=)ではなく、IS NULL演算子を使用します。これは、NULLは「値が存在しない」ことを表す特殊な状態であり、= NULLのような等価比較では正しく判定できないためです。この記事では、実際にテーブルを作成し、IS NULLを使ってNULLのレコードを取得する手順を解説します。1. サンプルテーブルの作成まず、従業員名と年齢を格納するテーブルを作成します。mysql> create table DemoTable ( EmployeeName varchar(100), EmployeeA