如何在"Where"子句之前编写"Order By"子句

Kev*_*ven 3 sql oracle

我想ORDER BY在我的WHERE条件之前编写一个子句,因为我需要将结果截断为10,但我需要先按字母顺序对它们进行排序.

我知道你不能放在那ORDER BY之前WHERE我怎么能这样做?

我需要做以下事情:

SELECT *
FROM myTable
ORDER BY TOP10
WHERE ROWNUM <=10
Run Code Online (Sandbox Code Playgroud)

Con*_*rix 16

您可以使用内联视图

SELECT * 
FROM (
 SELECT *
 FROM myTable
 ORDER BY TOP10) T
WHERE ROWNUM <=10
Run Code Online (Sandbox Code Playgroud)

  • +1.2006年9月Tom Kyte的"Ask Tom"专栏中的解释是["On ROWNUM and Limiting Results"](http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197的.html).请注意,Oracle会智能地处理此查询; 特别是,它*不会*尝试对整个表进行排序,然后选择前十行​​. (3认同)