gpt4 book ai didi

sql - 如何从前 2 行或类似内容中选择第二行?

转载 作者:行者123 更新时间:2023-12-04 22:07:15 26 4
gpt4 key购买 nike

我想执行 2 个分开的命令来从我的表中返回一个值。

第一个可能是前 1,因为是第一行,没问题...

但是我怎样才能制作像前 2 行这样的东西,但只显示第二行?

有没有简单的方法来做到这一点?像一个简单的选择?

1 行:

select top 1 Code from Products order by LastUpdate desc

最佳答案

据我所知,这个问题没有通用的解决方案 - 不同的 DBMS 有不同的实现方式。

在 Microsoft SQL Server 中,您可以使用 ROW_NUMBER 子句:

SELECT code FROM 
(SELECT TOP 2 code, Row_Number() OVER (ORDER BY lastupdate) AS rownum
FROM Products) AS tbl
WHERE rownum = 2;

Oracle 有一个类似的伪列,称为 ROWNUM。然而,这里需要注意的是,这个值是计算出来的 之前 排序开始发挥作用。因此,您将不得不再次使用子查询:
SELECT code FROM
(SELECT code, ROWNUM rnum FROM
(SELECT code FROM Products ORDER BY lastupdate)
WHERE ROWNUM <= 2)
WHERE rnum = 2

请注意,您不能执行简单的 ROWNUM = 2这里的条件,因为它永远不会被满足 - ROWNUM 考虑了实际的数量 返回 行,所以如果从来没有第一行返回,ROWNUM 永远不会达到值 '2',因此永远不会满足条件。

在 MySQL 中,这更简单:
SELECT code FROM Products ORDER BY lastupdate LIMIT 2, 1

(我不熟悉 MySQL,所以我不确定 LIMIT 是在 ORDER BY 子句之前还是之后计算 - 如果其他人可以确认这一点会很棒)。

其他 DBMS 以一种甚至不同的方式做到这一点。

关于sql - 如何从前 2 行或类似内容中选择第二行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com