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のレコードを取得することができます。
他のテーブルから値を持ってきて、取得した値を条件に使いたい時などに便利です。