MySQL でサブクエリを利用して他のテーブルのデータを元に処理をする

2010年12月 9日 22:12 MySQL でサブクエリを利用して他のテーブルのデータを元に処理をする

サブクエリを使うことによって、テーブル1の検索結果を元に、テーブル2に何らかの処理を行なう、というようなことが可能です。

例えば以下のように架空のショッピングサイトの、ユーザーのIDとアドレスを格納した「UserList」と、注文毎のIDと商品名と購入者のユーザーIDを格納した「OrderList」という二種類のテーブルがある場合。

UserList
UserID MailAddress
1 yukimidaifuku_daisuki@abe-tatsuya.com
2 nattou_kirai@abe-tatsuya.com
3 syabusyabu_tabetai@abe-tatsuya.com
OrderList
OrderID OrderItem OrderUserID
1 しゃぶしゃぶ用鍋 3
2 しゃぶしゃぶ用松坂牛 3
3 雪見だいふく とろける生キャラメル味 20個セット 1
4 雪見だいふく W生チョコレート味 20個セット 1
5 納豆撲滅装置 2

この場合、例えば「yukimidaifuku_daisuki@abe-tatsuya.com」というメールアドレスのユーザーが注文した商品をリストアップしたい、というときには、

  1. まず、テーブル「UserList」を検索して「yukimidaifuku_daisuki@abe-tatsuya.com」というアドレスのユーザーのIDを取得
  2. 取得したユーザーのIDを元に「OrderList」を検索して、注文した商品リストを取得

という手順になるわけですが、この処理をサブクエリを使うことによって、以下のようにできます。

select OrderList.OrderItem
from OrderList
where OrderList.OrderUserID = (select UserList.UserID
                               from UserList
                               where UserList.MailAddress = 'yukimidaifuku_daisuki@abe-tatsuya.com');

こんな感じで、where句の中に括弧でくくった別の select文を書くことで、サブクエリとして実行できます。

update文やdelete文でも、同様にwhere句の中にサブクエリを使うことができます。

他にも、

update TABLE1
set TABLE1.col1 = (select TABLE2.col2 from TABLE2 where TABLE2.col3 = 'hoge')
where TABLE1.col4 = 'huga';

こんな感じの使い方もできます。
update文で更新する値そのものを、別のテーブルから引っ張ってくる、というわけですね。

なおMySQLでは、update や delete でサブクエリを使う場合は「テーブル1の何らかの検索結果を元に、同じテーブル1に対して処理を実行する」ということができないようです(select文では可能)。

Twitterつぶやく
阿部辰也へのお仕事のご依頼・お問合せはこちら

Twitter始めました。Followはお気軽にどうぞ。

関連するブログ記事
スポンサード リンク
カテゴリー
MySQL
タグ
delete | MySQL | RDBMS | select | SQL | update | コマンドライン
現在位置
TOP > Web制作技術 > MySQL > MySQL でサブクエリを利用して他のテーブルのデータを元に処理をする
前のブログ記事
2010年11月の読了本まとめ [2010年12月 4日 19:36]
次のブログ記事
2010年12月の読了本まとめ [2011年1月 6日 15:23]

トラックバック(0)

このブログ記事に対するトラックバックURL:

コメント(7)

Oakley Racing Jacket Sunglasses Cheap [2014年9月 7日 19:54]

http://www.montedentistry.com/?26.phpCheap Oakley Straight Jacket Sunglasses

Michael Kors Wallets Sale [2014年9月21日 00:02]

df
Michael Kors Wallets Sale http://www.andreaseigel.com/bin01/mk.html

payday loans [2014年11月 7日 05:30]

epglgqn http://paydayloansnsa.com/ payday loans

uk [2015年8月22日 00:36]

Hello!

pills [2016年4月27日 04:22]

Hello!

generic_viagra [2016年4月27日 04:23]

Hello!

agen sbobet [2016年6月17日 14:16]

definitely a great post

コメントする


画像の中に見える文字を入力してください。

 

このブログについて

阿部辰也

Webコンサルタントやシステムエンジニア、執筆業などをやっている、グッドホープ代表・阿部辰也のブログです。
Web技術系のTipsから仕事の話、趣味の話まで色々と。
人生は所詮生まれてから死ぬまでの壮大な暇つぶし。
だったら有意義に暇をつぶして生きましょー。

阿部辰也へのお仕事のご依頼・問合せはこちらからどうぞ。

Twitter: @t_abe
読書メーター: ID:Tatsuya

このブログのサイトマップ
このブログのはてなブックマーク数

Feed/RSS購読

タグクラウド

最近のトラックバック

阿部辰也の著書

77のキーワードで知る インターネットで稼ぐ 図解 ブログ・メルマガ・Webサイト構築の基本

77のキーワードで知る インターネットで稼ぐ 図解 ブログ・メルマガ・Webサイト構築の基本

頑張って書いたのに、出版後すぐに出版社が倒産して印税も貰えずじまいで俺涙目(笑)。

Powered by Movable Type 5.02

スポンサード リンク

はてなブックマーク



あわせて読みたい

t-abeの今読んでる本

t-abeの最近読んだ本

t-abeの今やってるゲーム

t-abeの最近やったゲーム