Упорядочивание по значению состояния 1 и упорядочение по имени записи asc в MySQL - PullRequest
0 голосов
/ 08 июня 2018

Я хочу получить записи о пользователях, я хочу, чтобы получить 10 пользователей, и у того, кто имеет статус = 1, сначала отображается его отображение, и если два имени пользователя начинаются с одинакового алфавита, будет отображаться порядок по имени, а у кого статус = 1, Статус пользователя должен иметь 0 или 1. короткий заказ по имени только тех пользователей, которые имеют статус = 1

вот мой запрос

 SELECT users_id, concat(users_fname, ' ', users_lname) as name,
 IFNULL(users.users_age, '') as users_age 
 FROM `users` ORDER BY status DESC, name ASC LIMIT 10

Заранее спасибо,пожалуйста, помогите мне сократить это.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

надеюсь, это поможет вам

ORDER BY status DESC, (CASE WHEN status = '1' THEN 1 ELSE 0 END),name ASC

вот целый запрос

SELECT users_id, concat(users_fname, ' ', users_lname) as name,
 IFNULL(users.users_age, '') as users_age 
 FROM `users` ORDER BY status DESC, (CASE WHEN status = '1' THEN 1 ELSE 0 END),name ASC LIMIT 10
0 голосов
/ 08 июня 2018

Использование RAND в предложении ORDER BY приводит к тому, что пользователи будут упорядочены случайным образом независимо от их status.

Вы должны поместить выборку из 10 случайных записей в подзапрос, а затем использовать этот набор во внешнем запросе, который упорядочивает на status по желанию:

SELECT users_id, name, users_age
FROM 
(
   SELECT users_id, concat(users_fname, ' ', users_lname) as name,
          IFNULL(users.users_age, '') as users_age 
   FROM `users` 
   ORDER BY RAND() LIMIT 10
) AS t
ORDER BY status DESC, 
         CASE 
            WHEN status = 1 THEN name 
            ELSE 1
         END ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...