Как сначала отсортировать по ключевому слову?

#mysql #sql #sorting #select #sql-order-by

#mysql #sql #сортировка #выберите #sql-order-by

Вопрос:

Вот пример базы данных

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

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

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

Обновить

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

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

Комментарии:

1. Если вы не знаете, сколько стран, то как вы можете указать пункт «Порядок»?

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

3. @Sadikhasan ок, допустим, тогда у меня в sql есть 50 фиксированных стран?

4. Затем вы должны упомянуть пункт заказа страны в качестве ответа от @SaharashShah

Ответ №1:

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

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

Ответ №2:

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

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

Или вы можете использовать ПОЛЕ

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

Ответ №3:

Используйте функцию ПОЛЯ

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

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