Порядок MySQL: поместить строки, соответствующие чему-либо, поверх запроса? - PullRequest
2 голосов
/ 02 февраля 2012

Я выполняю запрос, который получает пользователей с определенным возрастом. E.G AGE <= 5

Таким образом, запрос получает следующие строки:

Country | Age
US        5
US        20
AR        3
ES        5
US        2

Проблема в том, что для сохранения актуальности я хочу сначала отобразить результаты, соответствующие стране пользователя, на примере США это должно выглядеть так:

Country | Age
US        2
US        5
US        20
US        2
AR        3
ES        5

Я знаю, как сделать это с двумя запросами, сначала получить результаты в США, а затем все остальное и упорядочить по возрасту, но я хотел знать, возможно ли получить результаты, упорядоченные только одним запросом.

Ответы [ 2 ]

5 голосов
/ 02 февраля 2012

Вы можете использовать ORDER BY, как это:

order by case country when 'US' then 1 else 2 end, country, age

Это ставит США на первое место, а затем - остальные и сортируется по country.

2 голосов
/ 02 февраля 2012

Предположим, что ваша структура таблицы:

CREATE TABLE tblName
(
   country VARCHAR(20) NOT NULL,
   age INT NOT NULL
)

Затем вы можете выполнить следующий запрос для соответствия вашим требованиям.

SELECT * FROM tblName WHERE age <= 5 ORDER BY (country='US') DESC, age
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...