sql >> Database teknologi >  >> RDS >> Mysql

hvordan mysql update self table fungerer

Du har ikke en unik kolonne til at identificere dine rækker. Så din JOIN vil sandsynligvis opdatere flere rækker, som du tror.

Du vil sikkert gerne have sådan noget i stedet:

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

Hvis du kun ønsker at opdatere rækkerne med NULL i kolonne b , dette er kun et spørgsmål 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. YEAR() Eksempler i SQL Server (T-SQL)

  2. Kan ikke oprette JDBC-forbindelse til MySQL (ved hjælp af Java, IntelliJ og Linux)

  3. Få varighed som tidsstempelforskel for gentagne placeringsændringer

  4. Er Oracles SYS_GUID() UUID RFC 4122 kompatibel?