您没有唯一的列来标识您的行。因此,您
JOIN可能会按照自己的想法更新更多行。
您可能想要这样的东西:
UPDATe tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2USING (a)SET t1.b = t2.m;
参见http://sqlfiddle.com/#!2/c6a04/1
如果您只想更新 b
NULL列中的行,那么这只是子句的问题: __
WHERe
CREATE TABLE tem(a INT,b INT); INSERT INTO tem VALUES(1,2),(1,1),(1,NULL),(2,3);UPDATe tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2USING (a)SET t1.b = t2.mWHERe t1.b IS NULL;
参见http://sqlfiddle.com/#!2/31ffb/1



