Bạn không có một cột duy nhất để xác định các hàng của mình. Vì vậy, JOIN
của bạn có thể sẽ cập nhật nhiều hàng hơn như bạn nghĩ.
Bạn có thể muốn một cái gì đó tương tự thay thế:
UPDATE tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2
USING (a)
SET t1.b = t2.m;
Xem http://sqlfiddle.com/#!2/c6a04/1
Nếu bạn chỉ muốn cập nhật các hàng có NULL
trong cột b , đây chỉ là vấn đề của WHERE
mệnh đề:
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 t2
USING (a)
SET t1.b = t2.m
WHERE t1.b IS NULL;
Xem http://sqlfiddle.com/#!2/31ffb/1