Mysql
 sql >> Base de données >  >> RDS >> Mysql

Colonne de mise à jour MySQL basée sur la ligne précédente (même colonne)

Vous pouvez utiliser une UPDATE avec un JOIN à une table dérivée pour cela :

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;

La table dérivée utilise des variables pour calculer l'Image valeurs des enregistrements ayant NULL s.

Démo ici