Сортировка SQL с условиями

У меня есть стол с игроками. Админ хочет отсортировать игроков по условию. Если столбец activerank = 1, то проигрыватель добавляет к сортировке иначе, если activerank = 2 проигрыватель должен отображаться в конце проигрывателей. Как я могу это сделать?

Вот мой запрос без этого условия:

$sql = '
  SELECT c.*
  FROM `child` AS c
  WHERE  '
  c.`id` > 0
  ' ORDER BY c.`rank` DESC ';

Что вы имеете в виду под the player should be shown at the end of players?

lucumt 23.07.2018 09:32

Вы можете использовать оператор CASE.

Ahmed_Ali 23.07.2018 09:34

Разве вы не могли бы просто отсортировать по активному рангу, anotherfield_you_are_sorting_on - поскольку все 2 будут в конце.

Andrew 23.07.2018 09:35

игрок по-прежнему будет виден всем пользователям, но на последней позиции. Игроки с рангом> 0 должны появляться в первой позиции.

Jeni Vasileva 23.07.2018 09:35
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
4
832
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать дополнительную сортировку по первому порядку по activerank Ascending

  SELECT c.*
  FROM `child` AS c
  WHERE  '
  c.`id` > 0
  ' ORDER BY activerank ASC,  c.`rank` DESC '

в этом запросе проигрыватели с activerank = 1 будут первыми и будут отсортированы среди них по рангу, а проигрыватели с activerank = 2 будут последними.

Для более продвинутой сортировки рекомендую использовать СЛУЧАЙНАЯ СТАТЬЯ

Вы можете попробовать добавить CASE WHEN в ORDER BY и использовать несколько ORDER BY

 SELECT c.*
  FROM `child` AS c
  WHERE  'c.`id` > 0' 
  ORDER BY c.`rank` DESC,
   (
   CASE activerank 
        WHEN 1 THEN 0
        WHEN 2 THEN 1 
   END
   )  

Другие вопросы по теме