2014-01-25 7 views

Antwort

16

Im Standard-SQL, müssen Sie eine case Anweisung

Select * 
From people 
ORDER BY (case when names = 'john' then 1 
       when names = 'steve' then 2 
       when names = 'bob' then 3 
       when names = 'bill' then 4 
      else 5 
     ); 

Einige SQL-Motoren Verknüpfungen zu diesen haben, aber Sie erwähnen nicht, welche Datenbank Sie verwenden.

Zum Beispiel in MySQL können Sie tun:

order by field(names, 'john', 'steve', 'bob', 'bill'); 
+3

würde dies funktionieren, wenn zwei Leute John genannt wurden? –

+4

Was ist passiert, als Sie es versucht haben? –

+1

@ user3208629. . . Ja, das würde funktionieren, wenn zwei Leute "John" heißen würden. Beide würden zuerst in der Liste erscheinen. –

1

Ein anderer Ansatz, verwenden charIndex, dh

ORDER BY CharIndex('|'+names+'|','|john|steve|bob|bill|') 

Charindex wird die Position des gefundenen Namen zurückgeben, die früher in der großen Liste es ist gefunden, die niedrigere Zahl zurückgegeben von charIndex