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');
① 一个字段排序
优先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
① 一个字段
优先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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论