|
|
|
| Есть некая таблица типа
id - autoincrement
Записи внутри вида
1 Москва 1
2 Владивосток 19
3 Житомир 5
В стандартном виде сортирую по displayorder при выводе.
Однако иногда нужно чтобы первой выводилась конкретная запись, а оставшиеся согласно displayorder выводились. Можно это как-то одним запросом сделать ?
В голову пришел пока только способ в два запроса(один на запрос первого элемента, второй на оставшиеся), но может быть как-то лучше можно сделать ? | |
|
|
|
|
|
|
|
для: Richard Ferlow
(20.03.2011 в 20:06)
| | Можно. ORDER BY позволяет сортировать по нескольким столбцам, в том числе сурогатным, нужно только подходящий столбец подготовить. По какому условию отбираются города, которые нужно поместить в начало (чтобы можно было пример привести)? | |
|
|
|
|
|
|
|
для: cheops
(20.03.2011 в 20:11)
| | Пользователь зашел на сайт, определило что он из Владивостока - соответственно Владивосток при выводе первым должен выводиться, а остальные города согласно displayorder. Такой пример имеете ввиду ? | |
|
|
|
|
|
|
|
для: Richard Ferlow
(20.03.2011 в 20:16)
| | Тогда можно поступить как-то так
SELECT id cityname displayorder
FROM tbl
ORDER BY IF(id=2, 0, 1), displayorder
|
| |
|
|
|
|
|
|
|
для: cheops
(20.03.2011 в 20:20)
| | Спасибо.
Но не могли бы пояснить как работает конструкция
IF(id=2, 0, 1) ? | |
|
|
|
|
|
|
|
для: Richard Ferlow
(20.03.2011 в 20:23)
| | Если первое условие равно TRUE возвращается второй параметр, если FALSE - третий. Суть в том, чтобы при нахождении города с id равным 2 выдать число меньше, чем для остальных городов. Сортировка сначала идет по первому столбцу, который зафиксирует этот город вверху, а потом по второму столбцу, что позволит сортировать остальные города обычным порядком. | |
|
|
|
|
|
|
|
для: cheops
(20.03.2011 в 20:26)
| | Спасибо, буду пробовать. | |
|
|
|