sql >> Databasteknik >  >> RDS >> Mysql

hur man underhåller fältet för visningsordning i php

Du kan använda större värden för visning, som att säga:

apple : 1 000 000

orange : 2 000 000

banana : 3 000 000

Om jag nu vill lägga till potato i position 2 (n=2) tar jag position n (=> 2:orange) och (n-1)(=> 1:äpple) och delar dem med 2 för att få den nya potatispositionen :

(1 000 000 + 2 000 000) / 2

=1 500 000

apple : 1 000 000

**potato : 1 500 000**

orange : 2 000 000

banana : 3 000 000

Detta kommer att fungera ganska länge, och om du någon gång känner att du har uttömt det här schemat kan du fortfarande multiplicera alla värden med 1000.

Du kan lika gärna fortsätta använda lågt värde (1, 2, 3, ...) och definiera deras typ som DOUBLE , så de kommer aldrig att kollidera när de divideras med 2.

REDIGERA: Om att placera banan i position 1 :

Använder formeln (n+(n-1))/2:

Här är n =1 (ny position).

Våra uppgifter är:

apple : 1 000 000

potato : 1 500 000

orange : 2 000 000

banana : 3 000 000

(1 000000+(0))/2

=500 000

Jag ger ordern 500 000 till banan :

**banana : 500 000**

apple : 1 000 000

potato : 1 500 000

orange : 2 000 000

Ännu en lösning:skapa ett textfält som skulle vara en indexerare och innehålla alla ID.

"1,2,3,4,5,6,7"

Om jag nu vill sätta element id 8 mellan 3 och 4, måste jag helt enkelt ersätta ",4," med ",8,4,".

Även om det är mer komplicerat när det gäller datoranvändning att hitta element vid index n, så jag skulle personligen använda den första lösningen.



  1. Ge några fält mer relevans och sortera efter relevans i mysql fulltextsökning

  2. Skriva till specifika scheman med RPostgreSQL

  3. mysql select vaknar inte för varchar-fältet

  4. Hur man hanterar främmande nyckel vid partitionering