Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Reordenar linhas em uma tabela MySQL


Você precisa fazer isso em duas etapas:
UPDATE MyTable 
   SET `Order` = `Order` + 1 
 WHERE `Order` > (SELECT `Order` 
                    FROM MyTable 
                   WHERE ID = <insert-after-id>);

...que deslocará o número do pedido de cada linha mais abaixo na lista do que a pessoa que você está inserindo depois.

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

Para inserir a nova linha (supondo que o ID seja de incremento automático), com um número de pedido um a mais do que a pessoa que você está inserindo depois.