MySQL LIMIT实例及取前N行数据

MySQL LIMIT子句简介

LIMIT子句在SELECT语句中用于约束结果集中的行数。LIMIT子句接受一个或两个参数。两个参数的值必须为零或正整数。

下面介绍了LIMIT子句带有两个参数的语法:

SELECT 
    column1,column2,...
FROM
    table
LIMIT offset , count;

语法解释如下:

  • offset指定第一行要返回的偏移量。第一行的偏移量(offset)为 0,而不是1;
  • count指定要返回最大的行数;

MySQL LIMIT子句简介

当LIMIT使用一个参数,该select语句将返回从结果集的开头到指定最大数的行记录(注:相当于获取前N行数据)。

SELECT 
    column1,column2,...
FROM
    table
LIMIT count;

上面的查询等同于以下查询,其中LIMIT子句接受两个参数:

SELECT 
    column1,column2,...
FROM
    table
LIMIT 0 , count;

MySQL LIMIT获取前N行

您可以使用LIMIT子句来查询表中的前N行数据,如下所示:

SELECT 
    column1,column2,...
FROM
    table
LIMIT N;

例如,要查询前10个客户,请使用以下查询:

SELECT
 customernumber,
 customername,
 creditlimit
FROM
 customers
LIMIT 10;

结果如图所示:

使用MySQL LIMIT获取前N条数据

MySQL LIMIT获取最大和最小值

LIMIT子句经常与ORDER BY子句一起使用。其执行顺序为先执行ORDER BY,再执行LIMIT,即先使用ORDER BY子句根据某些条件对结果集进行排序,然后使用LIMIT子句限制SELECT语句返回的行数。

请参阅示例数据库中的下customers表。

MySQL LIMIT获取最大和最小值

例如,要选择具有最高信用额度的前5个客户,请使用以下查询:

SELECT
 customernumber,
 customername,
 creditlimit
FROM
 customers
ORDER BY
 creditlimit DESC
LIMIT 5;

结果如下图所示:

MySQL LIMIT获取最大和最小值

下面SQL语句查询拥有最低信用额度前5名的客户:

SELECT
 customernumber,
 customername,
 creditlimit
FROM
 customers
ORDER BY
 creditlimit ASC
LIMIT 5;

结果如下图所示:

MySQL LIMIT获取最大和最小值

MySQL LIMIT获得第n个最大值

MySQL中最棘手的问题之一是如何选择结果集中的第n个最大值,例如,获取第二个(或第n个)最昂贵的产品,在不允许使用MAX或MIN函数的情况下,你可以使用MySQL LIMIT来解决这个问题。

  1. 首先,对结果集进行降序排序。
  2. 第二,使用LIMIT子句获得第n个最昂贵的产品。

通用查询如下:

SELECT 
    column1, column2,...
FROM
    table
ORDER BY column1 DESC
LIMIT nth-1, count;

让我们来看一个例子。

MySQL LIMIT获得第n个最大值

查看产品结果集:

SELECT
 productName,
 buyprice
FROM
 products
ORDER BY
 buyprice DESC;

结果如下图所示:

MySQL LIMIT获得第n个最大值

我们的需求是在结果集中查找价格第二高的产品。 要做到这一点,可以使用LIMIT子句来选择第二行:(注意,偏移量从零开始)

SELECT
 productName,
 buyprice
FROM
 products
ORDER BY
 buyprice DESC
LIMIT 1, 1;

结果如下图所示:

MySQL LIMIT获得第n个最大值

在本教程中,我们向您介绍了如何使用MySQL LIMIT子句限制SELECT语句返回的行数。我们还介绍了MySQL LIMIT如何获取前N行数据以及获取第n个最大值的实现方法及实例。

CSDN:程序猿 寄语:
1、作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。
2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。
3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。
4、程序不是年轻的专利,但是,他属于年轻。
5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。
6、一个好汉三个帮,程序员同样如此。
7、一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。
8、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。
9、程序是我的生命,但我相信爱她甚过爱我的生命。
10、信念和目标,必须永远洋溢在程序员内心。
11、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用JAVA进行底层开发更可笑的东西。
12、这句话不是很文雅,彻底鄙视那些害怕别人超越自己而拒绝回答别人问题的程序员。
13、如果调试一个程序让你很苦恼,千万不要放弃,成功永远在拐角之后,除非你走到拐角,否则你永远不知道你离他多远,所以,请记住,坚持不懈,直到成功。
14、最累的时候,家人是你最好的归宿。
 

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQLLIMIT后面只能加常数,不能直接加变量。如果在存储过程中使用LIMIT并且想要使用变量,可以使用动态SQL来执。首先声明一个变量,然后使用CONCAT函数将LIMIT语句中的常数替换为变量。接着将动态SQL存储到一个变量中,使用PREPARE语句准备执动态SQL,最后使用EXECUTE语句执动态SQL。例如,可以使用以下代码来实现这个功能: ``` DECLARE var_num1 INT; DECLARE var_sql VARCHAR(1024); SET var_num1 = 10; SET var_sql = CONCAT("SELECT * FROM test1 LIMIT ", var_num1, " ;"); SET @exec_sql = var_sql; PREPARE sql1 FROM @exec_sql; EXECUTE sql1; ``` 这样就可以在存储过程中使用变量来设置LIMIT的值了。请注意,这个方法只适用于MySQL 5.5以下的版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL limit后面加变量](https://blog.csdn.net/weixin_40649680/article/details/114069862)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [详解mysqllimit经典用法及优化实例](https://download.csdn.net/download/weixin_38738977/12833523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值