Originariamente inviato da supermac
idimage= id dell'immagine che vuoi spostare
posini = posizione iniziale di quella che vuoi spostare
posfinal = posizione dove la vuoi mettere
(ipotizzando che "posizione" sia numerico e che non sia chiave nella tua tabella e possa avere duplicati)
devi prevedere due casi:
caso 1: posini < posfinal
devi far scalare di una posizione in meno tutte le posizioni comprese tra la spostata e quella in cui vai a mettere la spostata
se A diventa 2, 2 deve diventare 1
se A diventa 3, 2 e 3 diventano 1 e 2
se A diventa 4, 2-3 e 4 diventano 1-2 e 3
se B diventa 4, 3 e 4 diventano 2 e 3
UPDATE tabella SET posizione = posizione -1 WHERE posizione > posini AND posizione<= posfinal
e poi
UPDATE tabella set posizione = posfinale WHERE ID = idimage
caso 2: posini > posfinal
sposti da posiz alta a posiz bassa quindi devi scalare di uno in più quelli compresi tra le due posizioni
se C diventa 1, 1 e 2 diventano 2 e 3
se C diventa 2, 2 diventa 3
se D diventa 1, 1-2 e 3 diventano 2-3 e 4
UPDATE tabella SET posizione = posizione +1 WHERE posizione < posini AND posizione>= posfinal
e poi
UPDATE tabella set posizione = posfinale WHERE ID = idimage