Isso exige uma consulta complexa que atualiza muitos registros. Mas uma pequena alteração em seus dados pode mudar as coisas para que possa ser alcançada com uma consulta simples que modifica apenas um registro.
UPDATE my_table set position = position*10;
Antigamente, a linguagem de programação BASIC em muitos sistemas tinha números de linha, encorajava o código spagetti. Em vez de funções, muitas pessoas escreveram
GOTO line_number
. Surgiram problemas reais se você numerasse as linhas sequencialmente e tivesse que adicionar ou excluir algumas linhas. Como as pessoas contornaram isso? Por linhas de incremento em 10! É isso que estamos fazendo aqui. Então você quer que as peras sejam o segundo item?
UPDATE my_table set position = 15 WHERE listId=1 AND name = 'Pears'
Preocupado que eventualmente as lacunas entre os itens desapareçam após vários reordenamentos? Sem medo apenas faça
UPDATE my_table set position = position*10;
De tempos em tempos.