MySQL:サブクエリを使用したデータ取得

MySQLサブクエリを使用してデータを取得することがあります。

複雑な仕様のデータベースや複数のテーブルが紐づいていたりなど、サブクエリを使用すると簡単に値を取得できることがあります。

今回はMySQLサブクエリを使用してデータを取得する際の基本的な方法をメモします。


サブクエリ

サブクエリは副問合せとも言います。
SELECTで取得した値を別のSQL文のSELECT句やWHERE句などで使用します。
一つのSQL文の中にもう一つのSELECT文があるイメージです。
サブクエリは()で囲って使用します。

SELECT
 フィールド 
FROM
 テーブル 
WHERE
 フィールド 演算子 (SELECT フィールド FROM テーブル WHERE フィールド 演算子 値)
;

サブクエリの使用方法

userテーブルのtestという名前のidを取得して、
取得したユーザのアイテムデータを取得する場合

DB

・userテーブル

id name
1 hoge
2 test
3 sample

・itemテーブル

id user_id item_name
1 1 りんご
2 2 いちご
3 2 ぶどう
4 1 ぶどう
5 3 りんご

SQL

SELECT * FROM item WHERE user_id = (SELECT id FROM user WHERE name = 'test');

itemテーブルのidが2と3のレコードを取得することができます。


他のテーブルから値を持ってきて、取得した値を条件に使いたい時などに便利です。