sql >> Databasteknik >  >> RDS >> Mysql

MySQL sortera efter någon lista

Sedan 1 < 3 < 77 < 123 , en enkel ORDER BY id skulle räcka.

Om du däremot vill beställa på detta sätt:77, 3, 123, 1 , då kan du använda funktionen FIELD() :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1) 
ORDER BY FIELD(id, 77, 3, 123, 1)

Om din fråga matchar fler rader än du listar i FIELD

FIELD returnerar 0 när en rad inte stämmer överens med något av ID:n du listar, det vill säga ett nummer som är mindre än siffrorna som returneras för listade ID. Det betyder att om din fråga matchar fler rader än de du listar, kommer dessa rader att visas först. Till exempel:

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 77, 3, 123, 1)

I det här exemplet, raden med ID 400 visas först. Om du vill att dessa rader ska visas sist, vänd helt enkelt på listan med ID:n och lägg till DESC :

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) DESC



  1. Relationella vs icke-relationella databaser – Del 1

  2. 2013 MVP Summit:En snabb recension och en titt framåt

  3. få värdet av en extra pivottabell kolumn laravel

  4. SQLite Skapa tabell