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

 更新时间:2025年07月16日 10:46:37   作者:小李大魔王  
这篇文章主要介绍了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') 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL简单了解“order by”是怎么工作的

    MySQL简单了解“order by”是怎么工作的

    在MySQl中ORDER BY 语句用于对结果集进行排序,那么它是怎么工作的,以及如何优化,下面由小编跟大家讲一讲
    2019-05-05
  • mysql中key 、primary key 、unique key 与index区别

    mysql中key 、primary key 、unique key 与index区别

    这篇文章主要介绍了mysql中key 、primary key 、unique key 与index区别的相关资料,需要的朋友可以参考下
    2016-10-10
  • MySQL 文本文件的导入导出数据的方法

    MySQL 文本文件的导入导出数据的方法

    但有时为了更快速地插入大批量数据或交换数据,需要从文本中导入数据或导出数据到文本。下面的具体的方法大家可以参考下。多测试。
    2009-11-11
  • MySQL约束constraint用法详解

    MySQL约束constraint用法详解

    大家都知道MySQL中经常会需要创建父子表之间的约束,下面这篇文章主要给大家介绍了关于MySQL约束constraint用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’的解决方法

    MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘

    这篇文章主要给大家介绍了关于MySQL存储表情时报错:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xA9\x0D\x0A...'的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2018-04-04
  • MySQL动态修改varchar长度的方法

    MySQL动态修改varchar长度的方法

    这篇文章主要介绍了MySQL动态修改varchar长度的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • MySQL中关于表的约束

    MySQL中关于表的约束

    在MySQL中,约束用于定义表的规则和限制,确保数据的准确性和可靠性,主要类型包括NOT NULL、DEFAULT、PRIMARY KEY、AUTO_INCREMENT、UNIQUE KEY、FOREIGN KEY、CHECK和INDEX等,NOT NULL约束确保列不能存储NULL值;DEFAULT设置默认值
    2024-09-09
  • MySQL 中行转列的方法

    MySQL 中行转列的方法

    这篇文章主要介绍了MySQL 中行转列的方法,帮助大家更好的理解和学习MySQL的使用,感兴趣的朋友可以了解下
    2020-12-12
  • Mysql 数据库访问类

    Mysql 数据库访问类

    Mysql数据库访问类 实现代码,对于想学习mysql操作类的朋友值得一看
    2009-02-02
  • mysql时间格式和Java时间格式的对应方式

    mysql时间格式和Java时间格式的对应方式

    这篇文章主要介绍了mysql时间格式和Java时间格式的对应方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论