有没有办法只显示SQL
查询的前N行输出?
奖励点,如果查询在输出N
行后停止运行。
我最感兴趣的是找到适用于Oracle
的内容。
答案 0 :(得分:46)
如果指定要定位的数据库,将会很有帮助。不同的数据库有不同的语法和技术来实现这一目标:
例如在Oracle中你可以通过在RowNum
上设置条件来解决这个问题(select ... from ... where ... rownum < 11
- &gt;会导致输出前10条记录)
在MySQL
中,您可以使用limit
子句。
Microsoft SQL Server =&gt; SELECT TOP 10 column FROM table
PostgreSQL和MySQL =&gt; SELECT column FROM table LIMIT 10
Oracle =&gt; select * from (SELECT column FROM table ) WHERE ROWNUM <= 10
(感谢stili)
Sybase =&gt; SET rowcount 10 SELECT column FROM table
Firebird =&gt; SELECT FIRST 10 column FROM table
注意:现代ORM
工具(如Hibernate)提供高级API(查询,限制,条件接口),根据您选择的方言抽象前n行的逻辑。
答案 1 :(得分:11)
对于Oracle,建议和接受的解决方案是错误的。尝试使用订单子句,结果将是不可预测的。 SQL需要嵌套才能在Oracle中实现这一目标。
select name, price
from (
select name, price, row_number() over (order by price) r
from items
)
where r between 1 and 5;
上面的例子来自http://www.adp-gmbh.ch/ora/sql/examples/first_rows.html,它对这个主题进行了很好的讨论。
答案 2 :(得分:6)
我对MySQL了解但我不知道它是否是标准SQL: 以“limit X”结束查询,X = n。你想要的线条。
示例:
SELECT NAME FROM EMPLOYEES ORDER BY SALARY DESC LIMIT 10;
答案 3 :(得分:-1)
对于Oracle,您可以尝试这个
select /*+ FIRST_ROWS(10) */ * from table;