Mysql
使用另一個表中的數據和 id 更新表元素
我需要使用來自表 B 的派生數據更新表 A 中 id=N 的行的元素。
表 A
uid
作為其主鍵,並包含 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;
試試看 !!!