sql >> Databasteknik >  >> RDS >> Mysql

hur mysql update self table fungerar

Du har inte en unik kolumn för att identifiera dina rader. Så din JOIN kommer förmodligen att uppdatera fler rader som du tror.

Du vill förmodligen ha något sådant istället:

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;

Se http://sqlfiddle.com/#!2/c6a04/1

Om du bara vill uppdatera raderna som har NULL i kolumn b , detta är bara en fråga om WHERE klausul:

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;

Se http://sqlfiddle.com/#!2/31ffb/1



  1. Hives hour() funktion returnerar 12 timmars klockvärde

  2. php:Lagra bild i Mysql blob, bra eller dåligt?

  3. Addnode resolv.conf Fel

  4. indexera ett bitfält i MYSQL