Derby没有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 :(得分:1)
请注意,Derby还支持FETCH FIRST语法,如下所述:http://db.apache.org/derby/docs/10.11/ref/rrefsqljoffsetfetch.html#rrefsqljoffsetfetch
Derby故意避免使用非标准的SQL结构。在您学习的过程中,使用这种特定于供应商的方法可能很方便,但它也可能导致非便携式应用程序。
使用标准SQL语法的优点是,当您将应用程序移动到另一个DBMS实现时,您不太可能遇到兼容性问题。在这种情况下,Derby强烈遵守标准SQL可能是一个好处:如果您使用像Derby这样的DBMS开发应用程序,您可能会成功地将您的应用程序部署到另一个标准较低的DBMS上。