Mysql
 sql >> Database >  >> RDS >> Mysql

Riordina le righe in una tabella MySQL

Devi farlo in due passaggi:

UPDATE MyTable 
   SET `Order` = `Order` + 1 
 WHERE `Order` > (SELECT `Order` 
                    FROM MyTable 
                   WHERE ID = <insert-after-id>);

...che sposterà il numero d'ordine di ogni riga più in basso nell'elenco rispetto alla persona che stai inserendo dopo.

Quindi:

INSERT INTO MyTable (Name, `Order`)
VALUES (Name, (SELECT `Order` + 1 FROM MyTable WHERE ID = <insert-after-id>));

Per inserire la nuova riga (supponendo che l'ID sia a incremento automatico), con un numero d'ordine di uno in più rispetto alla persona che stai inserendo dopo.