gpt4 book ai didi

sql - Oracle DB ORDER BY 和 ROWNUM 倒序?

转载 作者:行者123 更新时间:2023-12-02 04:28:54 26 4
gpt4 key购买 nike

我正在编写一条 Oracle SQL 语句来获取最近日期的值。如果我的表格如下所示:

+============+=================+
| sv_version | sv_date_applied |
+============+=================+
| 7.3.0 | 13-JUL-2014 |
+------------+-----------------+
| 7.4.0 | 13-JUL-2014 |
+------------+-----------------+

...我的 SQL 语句如下所示:

SELECT sv_version FROMtblSchemaVersion ORDER BY sv_date_applied DESC;

...我得到:

+============+
| sv_version |
+============+
| 7.4.0 |
+------------+
| 7.3.0 |
+------------+

...但是当我尝试获取顶行(7.4.0)时,如下所示:

SELECT sv_version, ROWNUM FROM tblSchemaVersion WHERE ROWNUM = 1 ORDER BY sv_date_applied DESC;

...我得到:

+============+========+
| sv_version | ROWNUM |
+============+========+
| 7.3.0 | 1 |
+------------+--------+

为什么ROWNUM会改变行的顺序?我认为它会像 SQL Server 的 TOP 或 MySQL 的 LIMIT 语句一样工作?

感谢您的宝贵时间。

最佳答案

它不像TOP那样工作。

Oracle 在 ORDER BY 之前应用 ROWNUM

你需要的是

SELECT ROWNUM, sv_version FROM
(
SELECT
sv_version
FROM tblSchemaVersion
ORDER BY sv_date_applied DESC
)
WHERE ROWNUM = 1

请参阅此SqlFiddle看看它是如何工作的

关于sql - Oracle DB ORDER BY 和 ROWNUM 倒序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24765274/

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