web-dev-qa-db-ja.com

高度なMySqlクエリ:別のテーブルの情報でテーブルを更新する

MySqlのテーブルを別のテーブルのデータで更新したいと思います。

「人」と「ビジネス」の2つのテーブルがあります。 peopleテーブルは、 "business_id"という列によってビジネステーブルにリンクされています。

必要なテーブル構造、主キーは星付き(テーブル:列):人々:* business_id、* sort_order、emailビジネス:* business_id、email

ビジネステーブルの電子メールの列を、次のようなピープルテーブルの電子メールで更新したいと思います(ここで何かが欠けていることがわかります)。

UPDATE business b SET email = (SELECT email  from People p where p.business_id = b.business_id AND sort_order = '1') WHERE b.email = ''; 

これは理にかなっていますか?出来ますか?

37
superUntitled
UPDATE business b, people p
   SET b.email = p.email
 WHERE b.business_id = p.business_id
   AND p.sort_order = '1'
   AND b.email = ''
97
ChssPly76

Sort_orderがINTの場合、「1」を使用しないでください-1を使用してください。

UPDATE business b
JOIN People p
ON p.business_id = b.business_id
AND p.sort_order = '1'
SET b.email = p.email
WHERE b.email = '';
14
hobodave

これを試してください、それは私のためにうまく機能します。

Update table a, table b
Set a.importantField = b.importantField,
a.importantField2 = b.importantField2
where a.matchedfield = b.matchedfield;
0
king zecole