为了账号安全,请及时绑定邮箱和手机立即绑定

mysql limit使用介绍

标签:
MySQL

Summary: in this tutorial, you will learn how to select the nth highest record in a database table using various techniques.

It is very easy to select the highest or lowest record in the database table with MAX or MIN function. However it’s a little bit tricky to select the Nth highest record.

In order to select the nth highest record, you  need to perform the following steps:

  • First you get the n highest records and sort them in ascending order. The nth highest record is the last record in the result set.

  • Then you sort the result set in descending order and get the first one.

Here is the query to get the n highest records in the ascending order:

SELECT *  FROM table_name ORDER BY column_name ASC LIMIT n

The query to get the nth highest record is as follows:

SELECT *  FROM ( SELECT *  FROM table_name ORDER BY column_name ASC LIMIT n ) AS tbl ORDER BY column_name DESC LIMIT 1

Fortunately, MySQL provides us with the LIMIT clause so you just leverage its functionality to rewrite the query as follows:

SELECT * FROM table_name ORDER BY column_name DESC LIMIT n - 1, 1

The query just returns the first row after n-1 row(s) so you get the nth highest record.

For example, if you want to get the second most expensive product (n = 2) in the products table, you just use the following query:

SELECT productCode, productName, buyPrice FROM products  ORDER BY buyPrice desc  LIMIT 1, 1

Here is the result:

+-------------+--------------------------------+----------+ | productCode | productName                    | buyPrice | +-------------+--------------------------------+----------+ | S18_2238    | 1998 Chrysler Plymouth Prowler | 101.51 | +-------------+--------------------------------+----------+ 1 row in set (0.00 sec)

The second technique to get the Nth highest record is using SQL subquery:

SELECT * FROM table_name AS a  WHERE n - 1 = ( SELECT COUNT(primary_key_column)  FROM products b  WHERE  b.column_name > a. column_name)

mysql select nth highest record

You can achieve the same result using the first technique to get the second most expensive product as the following query:

SELECT productCode, productName, buyPrice FROM products a  WHERE 1 = (  SELECT COUNT(productCode)  FROM products b  WHERE b.buyPrice > a.buyPrice)

In this tutorial, we have shown you how to select the nth record in a database table using LIMIT clause in MySQL.

原文链接:http://outofmemory.cn/mysql/tips/select-nth-highest-record-database-table-using-mysql

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消