2015-05-20 31 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行」。 –

相關問題