J'ai une table avec une colonne 'id' qui est auto-incrémentée. Dans certains enregistrements, j'ai des valeurs nulles. Je veux les mettre à jour par leurs lignes précédentes (ici précédent signifie id - 1) . Comment puis je faire ça?

Cette requête renvoie les enregistrements avec des valeurs nulles :

SELECT * FROM myTable
WHERE col1 = 0 

Qui renvoie:

id  col1  col2  ..... coln
15   0     0           0
23   0     0           0
0
ALalavi 4 nov. 2020 à 01:43

1 réponse

Meilleure réponse

Vous pouvez utiliser une sous-requête corrélée:

update mytable t
set col1 = (select t1.col1 from mytable t1 where t1.id = t.id - 1)
where col1 = 0
2
GMB 3 nov. 2020 à 22:45