MySQL自定义order by排序规则的示例详解
数据表
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') ascasc可省略,如果有些数据不在指定范围内,则从最后开始按照默认排序
② 多个字段排序
先按照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 ascasc可省略
② 多个字段
先按照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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
mysql中key 、primary key 、unique key 与index区别
这篇文章主要介绍了mysql中key 、primary key 、unique key 与index区别的相关资料,需要的朋友可以参考下2016-10-10
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘
这篇文章主要给大家介绍了关于MySQL存储表情时报错:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xA9\x0D\x0A...'的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。2018-04-04


最新评论