mysql查询倒数第三个_SQL查询倒数第三条数据 LIMIT + ORDER BY 用法,实例秒懂,避免入坑!...

Background

LIMIT 用错了好几次,经常以为LIMIT(10,20) 的意思是检索第11行到第20行,其实不是! 而应该是检索从第11行开始的后20行数据。今天定要重新写一遍避免自己入坑,也顺便提醒⏰下小伙伴哇!

还有一个问题是,可能使用两次相同的检索的语句,但是检索结果确实不同的。怎么解决这个问题其实超easy,见下文。

另外,其实无爱国内的好些个术语,感觉蛮怪的,例如:偏移量。所以下文都是人话!

一、LIMIT 用于限制查询结果的数量,也叫分页查询。

Example:可被用于查询表中前10条数据,或查询表中从第11到第60条数据。

用法:MySQL LIMIT 接受 1 个 或 2 个 参数。

参数必须是一个整数常量。

如果给定一个参数,该参数代表返回行数(从第一行数据算起)。

SELECT * FROM table LIMIT 5; -- 检索表中前5行数据

4. 如果给定两个参数,第一个参数 i 代表从表格中的第 i + 1 行数据开始检索,第二个参数 j 代表返回的行数。

SELECT * FROM table LIMIT 5,10; -- 检索表中第6行到第15行的数据

二、ORDER BY 用于对结果集按照一个列或者多个列进行排序。

Example:按照商品价格从大到小,输出商品名称和价格。

SELECT column_name FROM table_name ORDER BY column_name ASC|DESC;

三、easy 实例: 组合使用ORDER BY 和 LIMIT 检索表中倒数第三行数据

步骤: 1. 将表中数据倒序排序;

2. 使用LIMIT 2,1 检索从第(2+1)个开始的 1 个数据。

SELECT column_name FROM table_name ORDER BY column_name DESC LIMIT 2,1;

四、 执行相同查询语句,结果不同

在工作过程中,这可能是很常见的失误,排序分页结果中有重复数据,或者同一个语句两次执行结果不同。

例如:执行同样带ORDER BY 的查询,LIMIT 20。结果为排序前20条数据,和LIMIT 40查询结果中的前20项进行比对,发现不一致。

问题出在哪呢? 答:因为一级排序中有相同字段

例如:按照价格排序,有5种物品的价格一样,这可能导致两次检索的结果中5个物品的顺序不同,所以结果当然不一致!

怎么解决? 答:在加一个排序字段,来确保每一行数据都可以被排序

例如:按照价格排序,发现有5中物品的价格一样,那我们在加一个二级排序字段“数量”,这意味着对相同价格的商品,通过商品数量在进行一次排序,保证有序。

其实总结起来,最好选择唯一索引作为排序字段,这样就可以避免以上问题啦!

头图致敬DATABASE DESIGN老师,Rene maritte的作品也是老师制作的每个课件的头图。雷尼·马格利特(Rene Magritte,1898.11.21-1967.8.15),比利时超现实主义画家。他对波普艺术的影响十分重大。作品有《戴圆顶硬礼帽的男子》、《夜的意味》、《袭击》、《白纸委任状》等。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值