Могу ли я сделать запрос, который упорядочивает вещи по двум столбцам? - PullRequest
1 голос
/ 30 июня 2011

У меня есть туристический сайт. Когда люди ищут походы, их волнуют две проблемы:

  1. Насколько близко это от них, а
  2. Когда происходит событие

Так что иногда мне нужно представлять результаты поиска, упорядоченные сначала по дате, но если дата совпадает, то походы должны быть упорядочены по расстоянию. И наоборот.

Возможно ли такое в SQL?

Ответы [ 3 ]

5 голосов
/ 30 июня 2011

Просто добавьте операторы order-by, один за другим. Упрощенно я уверен:

SELECT 
  Distance,
  EventTime,
FROM Table1
ORDER BY Distance DESC, EventTime ASC
  • Обратите внимание, что вы можете упорядочивать по убыванию и возрастанию значений в одном запросе.
3 голосов
/ 30 июня 2011

Предложение ORDER BY является последним предложением оператора SELECT. Требуется список столбцов, разделенных запятыми. Список обрабатывается слева направо, поэтому

ORDER BY distance, event_start

... сначала упорядочим по расстоянию. Там, где есть повторяющиеся расстояния, они будут упорядочены на основе значений столбца event_start. По умолчанию порядок находится в порядке ASCending - необходимо указать DESC перед запятой, чтобы изменить логику. IE:

ORDER BY distance DESC, event_start

... поместит наибольшие расстояния в начало набора результатов.

0 голосов
/ 30 июня 2011
select * from table order by field1, field2;
...