sql >> Database >  >> RDS >> Mysql

hoe het weergavevolgordeveld in php . te behouden

U kunt grotere waarden gebruiken voor weergave, zoals bijvoorbeeld:

apple : 1 000 000

orange : 2 000 000

banana : 3 000 000

Als ik nu potato wil toevoegen in positie 2 (n=2) neem ik n (=> 2 :oranje) en (n-1)(=> 1 :appel) positie en deel ze door 2 om de nieuwe aardappelpositie te krijgen:

(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

Dit zal behoorlijk lang werken, en als je op een gegeven moment het gevoel hebt dat je dit schema hebt uitgeput, kun je nog steeds alle waarden met 1000 vermenigvuldigen.

Je kunt net zo goed een lage waarde (1, 2, 3, ...) blijven gebruiken en hun type definiëren als DOUBLE , zodat ze nooit zullen botsen wanneer ze worden gedeeld door 2.

BEWERK: Over het plaatsen van banaan in positie 1:

Met formule (n+(n-1))/2:

Hier n =1 (nieuwe positie).

Onze gegevens zijn:

apple : 1 000 000

potato : 1 500 000

orange : 2 000 000

banana : 3 000 000

(1 000000+(0))/2

=500 000

Ik geef de bestelling 500 000 aan banaan :

**banana : 500 000**

apple : 1 000 000

potato : 1 500 000

orange : 2 000 000

Nog een andere oplossing:maak een tekstveld dat een indexer zou zijn en alle id's zou bevatten.

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

Als ik element id 8 tussen 3 en 4 wil plaatsen, moet ik gewoon ",4" vervangen door ",8,4,".

Hoewel het qua rekenkracht ingewikkelder is om een ​​element op index n te vinden, zou ik persoonlijk de eerste oplossing gebruiken.



  1. SQLite UNIEKE beperking

  2. Een query uitvoeren - MySQL en PHP

  3. MYSQL/PHP vind het meest voorkomende item dat geassocieerd wordt met een bepaald item

  4. Lucene.Net configureren met SQL Server