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

Omarranger rækker i en MySQL-tabel

Du skal gøre dette i to trin:

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

...hvilket vil flytte rækkefølgen på hver række længere nede på listen end den person, du indsætter efter.

Så:

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

For at indsætte den nye række (forudsat at ID er automatisk stigning), med et ordrenummer på én mere end den person, du indsætter efter.



  1. Behold specialtegn, når du importerer til mysql fra csv

  2. Sådan undslipper du værdi søgeord i mysql, mens du bruger Select-sætning

  3. SELECT-listen er ikke i GROUP BY-sætning og indeholder ikke-aggregeret kolonne .... inkompatibel med sql_mode=only_full_group_by

  4. Fjern kolonneoverskrift i outputtekstfilen