返回顶部
首页 > 资讯 > 数据库 >MySQL 查询的排序、分页相关
  • 895
分享到

MySQL 查询的排序、分页相关

MySQL查询排序MySQL查询分页 2022-05-16 22:05:26 895人浏览 薄情痞子
摘要

概述 数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤, 我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做降序排序,想

概述

数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤,

我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做降序排序,想看年龄从小到大的分布情况,就可能需要对user表的age字段进行升序排序。

也可能需要对数据进行限制,比如我们需要对付款的1~10,11~20,21~30 名的用户分别赠予不同的礼品,这时候对数据的限制就很有用了。

备注:下面脚本中[]包含的表示可选,| 分隔符表示可选其一。

数据排序 order by

语法格式如下:

需要排序的字段跟在order by之后;

asc 和 desc表示排序的规则,asc:升序,desc:降序,默认为升序 asc;

排序可以指定多次字段,多字段排序之间用逗号隔开。

多字段排序中,越靠前优先级越高,下面中cname1优先排序,当cname1等值的时候,cname2开始排序,直至所有字段都排序完。


select cname from tname order by cname1 [asc|desc],cname2 [asc|desc]...;

单个字段排序

举个例子,在销售额中通按照交易的订单进行金额额度降序的方式显示:


Mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | Goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
+---------+---------+---------+-------+
7 rows in set

mysql> select * from t_order order by amount desc;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    9 | hen   | 1752.02 |   7 |
|   11 | sol   | 1007.9 |  11 |
|   14 | sally  | 99.71  |   9 |
|   10 | helyn  | 88.5  |   4 |
|    8 | brand  | 52.2  |   2 |
|   13 | weng  | 52.2  |   5 |
|   12 | diny  | 12   |   1 |
+---------+---------+---------+-------+
7 rows in set

多个字段排序

多个字段排序用逗号隔开,优先级从左到右逐次递减,如下图,如果金额一致,则按照购买商品数量从多到少排序:


mysql> select * from t_order order by amount desc,goods desc;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    9 | hen   | 1752.02 |   7 |
|   11 | sol   | 1007.9 |  11 |
|   14 | sally  | 99.71  |   9 |
|   10 | helyn  | 88.5  |   4 |
|   13 | weng  | 52.2  |   5 |
|    8 | brand  | 52.2  |   2 |
|   12 | diny  | 12   |   1 |
+---------+---------+---------+-------+
7 rows in set

按alias排序

按照别名排序或者做条件查询的目的都是为了简化代码,方便使用,别名可以是英文,也可以是中文:


mysql> select account as ac,amount as am,goods as gd from t_order order by am,gd desc;

+-------+---------+----+
| ac  | am   | gd |
+-------+---------+----+
| diny | 12   | 1 |
| weng | 52.2  | 5 |
| brand | 52.2  | 2 |
| helyn | 88.5  | 4 |
| sally | 99.71  | 9 |
| sol  | 1007.9 | 11 |
| hen  | 1752.02 | 7 |
+-------+---------+----+
7 rows in set

字段排序中使用函数

下面使用了abs取绝对值函数,所以在 am字段降序排序中,-99.99 排在 99.71之上。


mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
|   15 | brand1 | -99.99 |   5 |
+---------+---------+---------+-------+
8 rows in set

mysql> select account as ac,amount as am,goods as gd from t_order order by abs(am) desc;

+--------+---------+----+
| ac   | am   | gd |
+--------+---------+----+
| hen  | 1752.02 | 7 |
| sol  | 1007.9 | 11 |
| brand1 | -99.99 | 5 |
| sally | 99.71  | 9 |
| helyn | 88.5  | 4 |
| brand | 52.2  | 2 |
| weng  | 52.2  | 5 |
| diny  | 12   | 1 |
+--------+---------+----+
8 rows in set

与Where条件结合使用

order 在 where 条件之后,根据where已经过滤好的数据再进行排序。下面是过滤出购买金额>80 且 购买数量>5的数据,并且按照价格降序排序。


mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
|   15 | brand1 | -99.99 |   5 |
+---------+---------+---------+-------+
8 rows in set

mysql> select * from t_order where amount>80 and goods>5 order by amount desc;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    9 | hen   | 1752.02 |   7 |
|   11 | sol   | 1007.9 |  11 |
|   14 | sally  | 99.71  |   9 |
+---------+---------+---------+-------+

数据limit

很多时候我们过滤出符合要求的数据之后,还需要得到这些数据中的某一个具体区间,比如对付款超过1000的用户的第1~10,11~20,21~30 名分别赠予不同的礼品,这时候就要使用limit操作了。

limit用来限制select查询返回的数据,常用于数据排行或者分页等情况。

语法格式如下:


select cname from tname limit [offset,] count;

offset表示偏移量,就是指跳过的行数,可以省略不写,默认为0,表示跳过0行,如 limit 8 等同于 limit 0,8。

count:跳过偏移量offset之后开始取的数据行数,有count行。

limit中offset和count的值不能用表达式。

获取前n条记录

如下图,limit n 和 limit 0,n 是一致的:


mysql> select * from t_order;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
|   10 | helyn  | 88.5  |   4 |
|   11 | sol   | 1007.9 |  11 |
|   12 | diny  | 12   |   1 |
|   13 | weng  | 52.2  |   5 |
|   14 | sally  | 99.71  |   9 |
|   15 | brand1 | -99.99 |   5 |
+---------+---------+---------+-------+
8 rows in set

mysql> select * from t_order limit 2
;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
+---------+---------+---------+-------+
2 rows in set

mysql> select * from t_order limit 0,2;
+---------+---------+---------+-------+
| orderid | account | amount | goods |
+---------+---------+---------+-------+
|    8 | brand  | 52.2  |   2 |
|    9 | hen   | 1752.02 |   7 |
+---------+---------+---------+-------+
2 rows in set

limit限制单条记录

这边我们获取支付金额中最大和最小的的一条记录。可以先使用 order 条件进行排序,然后limit 第1条记录即可:


 mysql> select * from t_order;
 +---------+---------+---------+-------+
 | orderid | account | amount | goods |
 +---------+---------+---------+-------+
 |    8 | brand  | 52.2  |   2 |
 |    9 | hen   | 1752.02 |   7 |
 |   10 | helyn  | 88.5  |   4 |
 |   11 | sol   | 1007.9 |  11 |
 |   12 | diny  | 12   |   1 |
 |   13 | weng  | 52.2  |   5 |
 |   14 | sally  | 99.71  |   9 |
 |   15 | brand1 | -99.99 |   5 |
 +---------+---------+---------+-------+
 8 rows in set

 mysql> select * from t_order where amount>0 order by amount desc limit 1;
 +---------+---------+---------+-------+
 | orderid | account | amount | goods |
 +---------+---------+---------+-------+
 |    9 | hen   | 1752.02 |   7 |
 +---------+---------+---------+-------+
 1 row in set

 mysql> select * from t_order where amount>0 order by amount asc limit 1;
 +---------+---------+--------+-------+
 | orderid | account | amount | goods |
 +---------+---------+--------+-------+
 |   12 | diny  | 12   |   1 |
 +---------+---------+--------+-------+
 1 row in set

以上就是MySQL 查询的排序、分页相关的详细内容,更多关于MySQL 查询的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 查询的排序、分页相关

本文链接: https://lsjlt.com/news/9951.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL 查询的排序、分页相关
    概述 数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤, 我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做降序排序,想...
    99+
    2022-05-16
    MySQL 查询排序 MySQL 查询分页
  • mysql怎么分组查询并排序
    要在MySQL中进行分组查询并排序,可以使用GROUP BY和ORDER BY子句。 例如,假设我们有一个名为"emplo...
    99+
    2024-04-09
    mysql
  • mysql 分页查询
    分页查询:一页显示不全,需要分页提交sql请求 select 查询列表 from 表名 ~join 表2 on 连接条件 where 筛选条件 group by 分组字段...
    99+
    2024-04-02
  • MySQL-分页查询
    分页查询 1 简要介绍1.1 应用场景1.2 语法1.3 特点 2 简单使用 1 简要介绍 1.1 应用场景 应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求 1.2 语法 select 查询列...
    99+
    2023-08-25
    java mysql
  • MySQL查询排序与查询聚合函数用法分析
    本文实例讲述了MySQL查询排序与查询聚合函数用法。分享给大家供大家参考,具体如下: 排序 为了方便查看数据,可以对数据进行排序 语法: select * from 表名 order by 列...
    99+
    2024-04-02
  • MySQL基础篇 | 简单的查询、条件查询、排序查询
    ✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步! 📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:MySQL专栏 目录 一:简单的查询 1. 查询一个字段 2. 查询多个字段  3...
    99+
    2023-09-01
    mysql 数据库 sql
  • mysql分页查询第二页
    要查询 mysql 中第二页数据,需要计算偏移量为(页码 - 1)* 每页记录数,并将其与限制行数一起指定在 limit 子句中。例如,查询第二页数据时,偏移量应为 10,限制行数应为 ...
    99+
    2024-08-01
    mysql
  • MySQL(八):排序与分页
    排序与分页 前言一、排序数据1、排序规则2、单列排序3、多列排序 二、分页1、背景2、实现规则3、拓展 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人...
    99+
    2023-08-16
    mysql 数据库 java
  • MySQL的分页查询方式
    这篇文章主要介绍“MySQL的分页查询方式”,在日常操作中,相信很多人在MySQL的分页查询方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL的分页查询方式”的疑惑...
    99+
    2024-04-02
  • mysql分页查询的示例
    这篇文章将为大家详细讲解有关mysql分页查询的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数...
    99+
    2024-04-02
  • Mybatisplus分页查询不生效如何排查
    这篇文章主要介绍“Mybatisplus分页查询不生效如何排查”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatisplus分页查询不生效如何排查”文章能帮助大家解决问题。一、问题描述在查询的...
    99+
    2023-07-05
  • oracle mysql sqlserver 分页查询
    oracle 写法:   SELECT * FROM(select b.*,ROWNUM rn from (...
    99+
    2024-04-02
  • mysql如何分页查询
    mysql 分页查询 如何进行分页查询? MySQL 分页查询可以通过 LIMIT 和 OFFSET 子句实现。LIMIT 子句指定返回的结果集中的记录数,而 OFFSET 子句指定从结...
    99+
    2024-06-15
    mysql
  • mysql怎么查询排序规则
    mysql中查询排序规则的方法首先,在命令行中启动MySQL服务;service mysql start  MySQL服务启动后,在命令行中输入mysql的用户名和密码登录到MySQL;mysql -u root -p登录到MySQL后,选...
    99+
    2024-04-02
  • MySQL中GROUP BY分组排序获取topN相关的示例分析
    这篇文章主要介绍MySQL中GROUP BY分组排序获取topN相关的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! MySQL VERSION...
    99+
    2024-04-02
  • MySQL排序与分页讲解
    目录一、order by二、二级排序三、分页limit一、order by 使用 ORDER BY 对查询到的数据进行排序操作。升序:ASC (ascend)   &nbs...
    99+
    2024-04-02
  • jsp+mysql实现网页的分页查询
    本文实例为大家分享了jsp+mysql实现网页的分页查询的具体代码,供大家参考,具体内容如下 一、实现分页查询的核心sql语句 (1)查询数据库的记录总数的sql语句: selec&...
    99+
    2024-04-02
  • SpringBoot整合ElasticSearch实现模糊查询,排序,分页,高亮
    目录 前言 1.框架集成-SpringData-整体介绍 1.1Spring Data Elasticsearch 介绍 2.框架集成Spring Data Elasticsearch 2.1版本说明 2.2.idea创建一个spring...
    99+
    2023-09-02
    elasticsearch spring boot java
  • MYSQL 查询数据排序数据和分组数据
    在mysql查询过程中,可以对数据进行过滤,也可以对数据进行排序,可以对数据分组,下面分别讲述排序数据和分组数据例子。 1,数据的排序 使用 ORDER BY select *...
    99+
    2024-04-02
  • mysql分组查询排序要注意哪些事项
    在使用MySQL进行分组查询排序时,需要注意以下几个事项:1. 分组字段与排序字段的选择:分组查询是按照指定的字段进行归类并计算聚合...
    99+
    2023-08-25
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作