sql >> Databáze >  >> RDS >> Mysql

jak funguje mysql update self table

Nemáte jedinečný sloupec pro identifikaci řádků. Takže vašeJOIN pravděpodobně aktualizuje více řádků, jak si myslíte.

Pravděpodobně byste místo toho chtěli něco takového:

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;

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

Pokud chcete aktualizovat pouze řádky s NULL ve sloupci b , toto je pouze otázka WHERE klauzule:

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;

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



  1. Vložit data do tabulek propojených cizím klíčem

  2. Získat výsledky dotazů MySQL jako jejich nativní datový typ?

  3. Chyba MySQL 1064 syntaxe, ale vše se zdá být v pořádku

  4. Jak změnit velikost sloupce v MySQL