2011-07-29 13 views
8

Witam mam 100 rekordy w moim tabeli SQL chcę sortować je według nazwy ASC ale muszę jeden rekord na szczycie rekord nr 43.Jak umieścić wiersz na górze w zapytaniu mysql.

Czy istnieje sposób mogę ciągnąć tę płytę 43, a potem wszystko inne Zamówienie ASC według nazwy?

Sztuczka polega na wykonaniu jednego zapytania.

+0

zobaczyć http://stackoverflow.com/questions/16568/how-to-select-the-nth-row-in-a-sql-database-table –

Odpowiedz

6

Użyj tego:

ORDER BY CASE WHEN (record is 43) THEN 0 ELSE 1 END, Name 
0

Użyj union utworzyć kwerendę, która wybiera pierwszy rekord następnie dołącza zestaw rekordów, które powinny pojawić się pod spodem.

Np

select * from table where id = 43; 
union 
select * from table where id <> 43; 
+0

Unia nie gwarantuje zamówienia bez przeprowadzenia Zamów przez. – Jacob

24

ma związków lub przypadków potrzebne:

ORDER BY id = 43 DESC, name ASC 
+0

super, to było dokładnie to, czego szukałem i mogę potwierdzić, że działa! – Tim

+0

@sqwk Upvote za udostępnienie łatwego rozwiązania .. –

0

To zapytanie należy dodać kolumnę o nazwie priorytetem, który ma wartość 1 na płycie o identyfikatorze 43 i 0 na wszystko inni. Najpierw sortuj według priorytetu.

SELECT mytable.*, IF(id = 43, 1, 0) AS priority FROM mytable ORDER BY priority DESC, name ASC 
Powiązane problemy