Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Coluna de atualização do MySQL com base na linha anterior (mesma coluna)


Você pode usar um UPDATE com um JOIN para uma tabela derivada para isso:
UPDATE Items AS i1
JOIN (
  SELECT ID, @n := @n + 1 AS Image
  FROM Items
  CROSS JOIN (SELECT @n := (SELECT MAX(Image) FROM Items)) AS v
  WHERE Image IS NULL
  ORDER BY ID
) AS i2 ON i1.ID = i2.ID
SET i1.Image = i2.Image;

A tabela derivada usa variáveis ​​para calcular a Image valores dos registros com NULL s.

Demonstração aqui