#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