#sql #sql-server #select #sql-order-by #case
#sql #sql-сервер #выберите #sql-order-by #случай
Вопрос:
City | Person City | Person
-------------- -------------
C | Fanie D | Jan
C | Johannes D | Maria
C | Anna to J | Frik
D | Jan C | Anna
D | Maria C | Fanie
J | Frik C | Johannes
Я хочу, чтобы ^ таблица была похожа на эту ^.
Я пытался сказать Select * FROM TableA GROUP BY City ='D', City = 'J' City = 'C'
, но тогда имена не в том порядке, как показано выше? Как бы мне этого добиться? Или как вы группируете по значению столбца и сортируете имена. ?
Комментарии:
1. вы хотите, чтобы это выглядело как левая таблица или правая таблица?
2. Упорядочить по городу с помощью оператора case
3. Как D перед J и C или Мария после Han, но перед Frik? Пожалуйста, объясните порядок сортировки, который вы имеете в виду.
Ответ №1:
Для индивидуальной сортировки или сортировки на основе некоторого правила можно использовать оператор case в предложении order by следующим образом и выполнить его
Select * FROM TableA order by case when city ='D' then 1
when city ='J' then 2 else 3 end, Person
Можете ли вы попробовать это?
Комментарии:
1. Не могли бы вы подробнее рассказать, почему это хорошее решение проблемы.
2. вы хотите настроить сортировку, которая не является естественной, поэтому сделайте ее естественным порядком, т.е. 1,2,3, и отсортируйте ее
3. Не могли бы вы отредактировать свой ответ и добавить эту дополнительную информацию.
Ответ №2:
Попробуйте это:
SELECT City, Person
FROM TableA
WHERE City IN ('C', 'D', 'J')
ORDER BY
(CASE City
WHEN 'D' THEN 1
WHEN 'J' THEN 2
WHEN 'C' THEN 3
ELSE 4 END),
Person;
Ответ №3:
select * from TableA ORDER BY City,Person
Это должно сработать, если вы хотите отсортировать по городу, а затем по человеку, но из вашего вывода я не вижу никакой сортировки.
Ответ №4:
я не знаю, зачем вам это нужно, я надеюсь, что это поможет вам!, я использовал функцию CASE MySQL решение, которое я предоставляю, заключается в том, ЧТО КОГДА город равен ‘D’, он будет первым, кто сортирует, тогда, если City = ‘C’, тогда это будет второй ЕЩЕэто будет последним
SELECT * FROM TableA GROUP BY City,Person ORDER BY CASE WHEN City = 'D' THEN 1 WHEN 'C' THEN 2 ELSE 3 END
Комментарии:
1. Возможно, вы можете объяснить, как решить проблему упорядочения, определив порядок сортировки.
2. @pushpraj я использовал функцию CASE в MySQL. решение, которое я предоставляю, заключается в том, ЧТО КОГДА город равен ‘D’, он будет первым, кто сортирует, тогда, если City = ‘C’, он будет вторым, ИНАЧЕ он будет последним
3. отлично, включите то же самое и в свой ответ, чтобы сделать его более понятным.