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

Vedligeholdelse/opdatering af postrækkefølge i mysql

Ville sådan noget gøre det?

UPDATE items 
SET position = CASE position 
  WHEN $oldpos THEN $newpos 
  ELSE position + SIGN($oldpos-$newpos)
 END
WHERE position BETWEEN LEAST( $newpos, $oldpos ) 
                AND GREATEST( $newpos, $oldpos );

Jeg testede det et par gange, og det ser ud til at virke.



  1. ADDTIME() Eksempler – MySQL

  2. NLS_COLLATION_ID() Funktion i Oracle

  3. Træk kolonner fra afledt tabel og summer dem i én MySQL SELECT-sætning

  4. Dvale:Opret indeks