mysql 第n高_MySQL选择第n个最高纪录

在本教程中,您将学习如何使用各种技术选择数据库表中第n个最高记录。

使用MAX或MIN函数可以轻松选择数据库表中最高或最低的记录。但是,选择第n个最高纪录有点棘手。 例如,从products表中获得第二高价格的产品。

要选择第n个最高记录,需要执行以下步骤:

首先,得到n个最高记录,并按升序排列。第n个最高记录是结果集中的最后一个记录。

然后,按顺序对结果集进行排序,并获得第一个结果集。

以下是以升序获得第n个最高记录的查询:

SELECT

*

FROM

table_name

ORDER BY column_name ASC

LIMIT N;

获得第n个最高记录的查询如下:

SELECT

*

FROM

(SELECT

*

FROM

table_name

ORDER BY column_name ASC

LIMIT N) AS tbl

ORDER BY column_name DESC

LIMIT 1;

幸运的是,MySQL为我们提供了限制返回结果集中的行数的LIMIT子句。可以重写上述查询如下:

SELECT

*

FROM

table_name

ORDER BY column_name DESC

LIMIT n - 1, 1;

查询返回n-1行之后的第一行,以便获得第n个最高记录。

获得第n个最高纪录的例子

第一种方法

例如,如果要在products表中获得第二个最昂贵的产品(n = 2),则使用以下查询:

SELECT

productCode, productName, buyPrice

FROM

products

ORDER BY buyPrice DESC

LIMIT 1 , 1;

执行上面查询语句,结果如下:

+-------------+--------------------------------+----------+

| productCode | productName | buyPrice |

+-------------+--------------------------------+----------+

| S18_2238 | 1998 Chrysler Plymouth Prowler | 101.51 |

+-------------+--------------------------------+----------+

1 row in set

第二种方法

获得第n个最高记录的第二种技术是使用MySQL子查询:

SELECT *

FROM table_name AS a

WHERE n - 1 = (

SELECT COUNT(primary_key_column)

FROM products b

WHERE b.column_name > a. column_name)

可以使用第一种技术获得相同的结果,以获得第二高价产品作为以下查询:

SELECT

productCode, productName, buyPrice

FROM

products a

WHERE

1 = (SELECT

COUNT(productCode)

FROM

products b

WHERE

b.buyPrice > a.buyPrice);

执行上面查询语句,结果如下:

+-------------+--------------------------------+----------+

| productCode | productName | buyPrice |

+-------------+--------------------------------+----------+

| S18_2238 | 1998 Chrysler Plymouth Prowler | 101.51 |

+-------------+--------------------------------+----------+

1 row in set

在本教程中,我们向您展示了如何使用MySQL中的LIMIT子句在数据库表中选择第n条记录。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值