2014-10-28 12 views
5

Załóżmy, że mam następujące zapytanie:MySQL ORDER BY określonej wartości

SELECT id, name FROM table ORDER BY name 
  • 4, Ashley
  • 1, Anna
  • 2, David
  • 3, Zach

Jak mogę podać konkretną nazwę na początku zamówienia, a następnie wykonać resztę zamówienia, coś li KE:

SELECT id, name FROM table ORDER BY name='david', name 
  • 1, David
  • 4, Ashley
  • 1, Anna
  • 3, Zach

Odpowiedz

8

Jesteś prawie dokładnie tam. Wystarczy desc:

SELECT id, name 
FROM table 
ORDER BY (name = 'david') DESC, name; 

MySQL traktuje wartości logicznych jako liczby całkowite, ze prawda jest "1" i fałszywe jest "0". Tak więc, gdy jest to prawda, wartość wynosi "1". Najpierw należy posortować w porządku malejącym.