質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

2915閲覧

[MySQL]別のテーブルのデータを使い、一定の条件のもとにテーブル全体のUPDATEを実行したい

maresuke

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

1グッド

0クリップ

投稿2017/03/24 19:59

お世話になります。
現在、mySQLを独学で学びながら使用しています。
簡単なSQL文なら組めるのですが、複雑なSQL文を設計するとなると未だ能力が足りません。
独力での解決が困難な問題に直面したため、皆様のお知恵をお借りしたく思います。

あるデータベース「perdonal_db」にテーブル「table1」,テーブル「table2」があります。
table1にはid(unique)、nameの2つのカラムがあります。
table2にはid(unique)、gender、mailの3つのカラムがあります。

今、table1にカラム「mail」を追加したうえで、table2について任意のidのgenderが"man"である場合、table1の同じidの「mail」データを、table2の「mail」データにしたいと思います。

たとえばtable1が
id name
1 dog
2 cat
3 bird
4 fish
:

table2が
id gender mail
1 man wan@mail.com
2 woman nyan@mail.com
3 woman chun@mail.com
4 man sashimi@mail.com
:

のとき、sql文実行後にtable1は

id name mail
1 dog wan@mail.com
2 cat (null)
3 bird (null)
4 fish sashimi@mail.com
:

となるようにしたいです。

件数が少なければphpを使用して処理するのですが、今回はtable1、table2に相当するデータが100万件以上あるため、できることならmysqlの機能……つまりSQL文だけで更新処理を行いたいと思います。
このような別テーブルのデータを基にして、一度にアップデート行うSQL文がありましたら、教えていただきたく思います。
よろしくお願いします。

KiyoshiMotoki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずtable1にmailカラムを追加します。

ALTER TABLE table1 ADD ( mail varchar(255) ) ;

varcharはtable2と同じ設定にすると良いと思います。

続いて更新です。
同じidかつtable2のgenderがmanだった場合、table2にtable1のmailを追加します。

UPDATE table1,table2 SET table1.mail = table2.mail WHERE table1.id = table2.id AND table2.gender = 'man';

ここで気軽にMySQL文試せるのでオススメです。
https://paiza.io/projects/new

参考
http://piyopiyocs.blog115.fc2.com/blog-entry-661.html

投稿2017/03/25 00:06

soich

総合スコア176

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maresuke

2017/03/25 04:23

すごい! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問