【发布时间】:2015-04-01 10:30:43
【问题描述】:
我对 Oracle 很陌生,所以我对 ROWNUM 语句并不完全熟悉。我正在尝试从我的表中获取最新的 4 篇文章。我得到了 4 个结果,但它们是 2012 年的文章,即使我的日期排序设置为 DESC。任何帮助都会很棒。
Oracle 查询:
SELECT bt.article_id, ba.*
FROM articles_types bt
LEFT JOIN blog_articles ba
ON ba.article_id = bt.article_id
WHERE ROWNUM < 5
ORDER BY Published DESC
【问题讨论】:
-
在传统的Oracle SQL语句中,引用Rownum的Where子句先被解析,然后才解析Order By,导致结果错误。这是一个看起来不错的语法示例,如果更多人会解析它,它会被正确解析,但是计算机首先执行所有 Where 子句,忽略实际上依赖于输出本身的伪列函数(因为 Order By 更改输出)。您还必须知道,任何没有 Order By 的语句根本没有任何逻辑排序。
标签: sql oracle date join rownum