Mysql
 sql >> база данни >  >> RDS >> Mysql

как работи mysql update self table

Нямате уникална колона, която да идентифицира вашите редове. Така че вашиятJOIN вероятно ще актуализира повече редове, както мислите.

Вероятно вместо това искате нещо подобно:

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;

Вижте http://sqlfiddle.com/#!2/c6a04/1

Ако искате да актуализирате само редовете с NULL в колона b , това е само въпрос на WHERE клауза:

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;

Вижте http://sqlfiddle.com/#!2/31ffb/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо не трябва да използвам mysql_* функции в PHP?

  2. MySQL IFNULL() Обяснено

  3. Как да използвам ON DUPLICATE KEY UPDATE в MySQL без УНИКАЛЕН индекс или ПЪРВИЧЕН КЛЮЧ?

  4. MySQL TCP връзка

  5. Използване на Amazon RDS с приложение за Android