2015-05-20 28 views
0

德比没有rownum功能?简单的方法来选择德比的前几行?

在oracle中,我可以选择前3行,如下所示。

select * from a where rownum < 3 

here,他们建议如下。但它很乏味。

SELECT * FROM (
    SELECT 
    ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber, 
    columns 
    FROM tablename 
) AS foo 
WHERE rownumber <= n 

回答

0

注意,德比也支持FETCH FIRST语法,如下所述:http://db.apache.org/derby/docs/10.11/ref/rrefsqljoffsetfetch.html#rrefsqljoffsetfetch

德比有意避免非标准的SQL结构。正如您所了解的,使用这种特定于供应商的方式可能很方便,但它也可能导致非便携式应用程序。

使用标准SQL语法的优点是,当您将应用程序移动到另一个DBMS实现时,您不太可能遇到兼容性问题。在这种情况下,Derby强烈遵守标准SQL可能会带来好处:如果您使用像Derby这样的DBMS开发应用程序,您很可能会成功将应用程序部署到另一个不太标准的DBMS。

+0

取第一行选项是我想要的。但是如果我想再选择两行呢? – verystrongjoe

+1

您可以获取3行,例如,“获取前3行”。或者,如果你第一次获取10行,那么想要获取10行,做“抵消10行取下10行”。 –

相关问题