2014-07-01 3 views
0

Вот пример базы данныхКак правильно сортировать по ключевому слову?

First_name  country 
Andy   US 
Manu   India 
Paul   Pakistan 
Ramesh   Pakistan 
Rich   India 

Итак, что я хочу, чтобы выбрать все записи из таблицы и отображения в соответствии с названием. Нравится: -

Я хочу выбрать имя человека для отображения, чье название страны - Индия и после США, Пакистан. Как выполнить эту задачу в одном SQL-запросе?

Update

Я не знаю, сколько страна есть.

Страна, которую необходимо отображать первым, будет введена пользователем.

+0

Если вы не знаете howmany страны, то как вы можете дать в порядке заказа? – Sadikhasan

+0

лучший способ написать хранимую процедуру с динамическими sql-запросами –

+0

@ Садихасан ok пусть говорят, что у меня есть 50 фиксированных стран в моем sql тогда? – user2001666

ответ

0

Используйте инструкцию CASE, чтобы дать каждой записи ключ сортировки. 0 для матча страны, 1 за несоответствие, поэтому желаемая страна на первом месте.

select * 
from mytable 
order by case when country = @country then 0 else 1 end, first_name 
+0

ты спасаешь мою жизнь. благодаря – user2001666

0

Может быть что-то вроде этого

Select * From Table1 
Order By CASE WHEN country = 'INDIA' THEN 0 
       WHEN country = 'US' THEN 1 
       Esle 2 
     END; 

Или Вы можете использовать FIELD

Select * From Table1 Order By FIELD(country, 'India', 'US', 'Pakistan') ; 
0

Использование FIELD Функция

Попробуйте это:

SELECT fitst_name, country 
FROM tableA 
ORDER BY FIELD(country, 'India', 'US', 'Pakistan'), fitst_name 
+0

Я обновил свой вопрос. – user2001666

Смежные вопросы