Mysql

使用另一個表中的數據和 id 更新表元素

  • June 1, 2020

我需要使用來自表 B 的派生數據更新表 A 中 id=N 的行的元素。

表 Auid作為其主鍵,並包含 DATE 元素foo

表 B 有a_uid一個元素,每個元素都有多行 DATE 元素b_foo

從概念上講,我想做的是

UPDATE A SET foo=MAX(b_foo) WHERE uid = a_uid

表 A:

uid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
foo DATE

表 B:

b_uid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
a_uid INT(10) UNSIGNED,
b_foo DATE

我覺得這應該比我想像的更明顯;也許是因為星期一是新冠肺炎?無論如何,非常感謝您的幫助!

你想要的被稱為UPDATE JOIN

首先,您必須創建一個具有MAX(b_foo)for each的查詢a_uid

SELECT a_uid,MAX(b_foo) max_b_foo FROM B GROUP BY a_uid;

將此作為子查詢,您可以執行UPDATE JOIN以下操作:

UPDATE A INNER JOIN
(SELECT a_uid,MAX(b_foo) max_b_foo FROM B GROUP BY a_uid) C
ON A.id = C.a_uid SET A.foo = C.max_b_foo;

或者你可以變得花哨並做

UPDATE A INNER JOIN
(SELECT a_uid uid,MAX(b_foo) max_b_foo FROM B GROUP BY a_uid) C
USING (uid) SET A.foo = C.max_b_foo;

試試看 !!!

引用自:https://dba.stackexchange.com/questions/268299