mysql中按状态值1排序和按名称排序asc记录

x0fgdtte  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(283)

我想得到用户的记录,我想得到10个用户,比谁的用户有状态=1,它的显示第一,如果两个用户名以相同的字母表开始,它将显示按名称排序asc谁的用户有状态=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

提前谢谢,请帮我把它剪短。

anauzrmj

anauzrmj1#

使用 RANDORDER 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
gudnpqoy

gudnpqoy2#

希望对你有帮助

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

相关问题