it编程 > 数据库 > Mysql

MySQL自定义order by排序规则的示例详解

17人参与 2025-07-16 Mysql

数据表

create table tb_user
(
    id      bigint auto_increment
        primary key,
    name    varchar(16)  not null,
    age     int          not null,
    address varchar(128) null
);
insert into test.tb_user (id, name, age, address) values (1, '张三', 18, 'china');
insert into test.tb_user (id, name, age, address) values (2, '李四', 19, 'china');
insert into test.tb_user (id, name, age, address) values (3, 'jack', 20, 'america');
insert into test.tb_user (id, name, age, address) values (4, 'jane', 22, 'america');
insert into test.tb_user (id, name, age, address) values (5, 'pig', 19, 'japan');
insert into test.tb_user (id, name, age, address) values (6, 'cat', 22, 'japan');

一、使用field()函数自定义顺序

① 一个字段排序

优先china,其次america,最后japan

select
    name, address
from
    tb_user
order by
    field(address, 'china', 'america', 'japan') asc

asc可省略,如果有些数据不在指定范围内,则从最后开始按照默认排序

② 多个字段排序

先按照address升序排序,相同再按照name降序排序

select
    name, address
from
    tb_user
order by
    field(address, 'china', 'america', 'japan') asc,
    field(name, '李四', '张三', 'jane', 'jack') desc

二、使用case when自定义排序规则

① 一个字段

优先china,其次america,最后japan

select
    name, address
from
    tb_user
order by
    case address
        when 'china' then  1
        when 'america' then 2
        when 'japan' then 3
    end,
    address asc

asc可省略

② 多个字段

先按照address排序,相同再按照name排序

select
    name, address
from
    tb_user
order by
    case address
        when 'china' then  1
        when 'america' then 2
        when 'japan' then 3
    end,
    address asc,
    case name
        when '李四' then  1
        when '张三' then 2
        when 'jane' then 3
        when 'jack' then 4
    end,
    name desc

三、随机排序

使用rand()函数随机排序,不根据任何字段,每次的顺序都是随机的

select
    name, address
from
    tb_user
order by
    rand()

到此这篇关于mysql自定义order by排序规则的示例详解的文章就介绍到这了,更多相关mysql order by内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

mysql创建用户以及给用户授予权限实现方式

07-16

一文揭秘MySQL索引失效原因与优化方案

07-16

MySQL  把查询结果更新或者插入到新表的操作方法

07-16

MySQL解决外键约束冲突的详细步骤和代码示例

07-16

MySQL中自增长序列(@i:=@i+1)的用法示例详解

07-16

MySQL 更新字段的值为当前最大值加1的解决方案

07-16

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论