仅显示SQL查询的前N行输出

时间:2009-05-17 07:28:24

标签: sql

有没有办法只显示SQL查询的前N行输出?
奖励点,如果查询在输出N行后停止运行。

我最感兴趣的是找到适用于Oracle的内容。

4 个答案:

答案 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;