sql >> Database >  >> RDS >> Mysql

hoe mysql update self table werkt

U heeft geen unieke kolom om uw rijen te identificeren. Dus jeJOIN zal waarschijnlijk meer rijen bijwerken als u denkt.

In plaats daarvan wil je waarschijnlijk zoiets:

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;

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

Als u alleen de rijen met NULL . wilt bijwerken in kolom b , dit is alleen een kwestie van WHERE clausule:

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;

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



  1. Hele woorden matchen met punttekens in MySQL

  2. laatste vrijdag van de maand in MySQL

  3. PostgreSQL:lopende telling van rijen voor een zoekopdracht 'per minuut'

  4. Hoe te bekijken welke Postgres-versie actief is