У меня есть стол с игроками. Админ хочет отсортировать игроков по условию. Если столбец activerank = 1, то проигрыватель добавляет к сортировке иначе, если activerank = 2 проигрыватель должен отображаться в конце проигрывателей. Как я могу это сделать?
Вот мой запрос без этого условия:
$sql = '
SELECT c.*
FROM `child` AS c
WHERE '
c.`id` > 0
' ORDER BY c.`rank` DESC ';
Вы можете использовать оператор CASE.
Разве вы не могли бы просто отсортировать по активному рангу, anotherfield_you_are_sorting_on - поскольку все 2 будут в конце.
игрок по-прежнему будет виден всем пользователям, но на последней позиции. Игроки с рангом> 0 должны появляться в первой позиции.






Вы можете использовать дополнительную сортировку по первому порядку по 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
)
Что вы имеете в виду под
the player should be shown at the end of players?