2

我需要在 Netbeans 7.2 的小型本地 JavaDB 中执行 SQL 调用,以从数据库中提取单个随机行。

SELECT * FROM JAVA2.FORTUNES ORDER BY RANDOM()

到目前为止,我已经使用 RANDOM() 函数让它工作,但我无法让 LIMIT 1 工作,它返回一个语法错误。

我知道每个数据库都有不同的方法来做到这一点,我无法弄清楚它是如何专门为 Netbeans 中的这个 JavaDB 工作的(我让它在不同语法的单独的 Oracle DB 中工作)。

是否有使用上述语法返回单行的 Java DB 特定或 ANSII 标准方法?

4

2 回答 2

3

Java DB 使用 SQL 的 OFFSET/FETCH 语法来获得此功能。

假设 RANDOM() 对它们进行正确排序,则以下语法应该有效:

SELECT * FROM JAVA2.FORTUNES ORDER BY RANDOM() OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY
于 2013-04-09T23:29:23.487 回答
0

来自http://db.apache.org/derby/faq.html#limit

Derby 不支持 LIMIT 语法。但是,Derby 10.4 添加了 ROW_NUMBER 函数,而 Derby 10.7 添加了 OFFSET 和 FETCH 子句。

Derby 还支持通过 JDBC 限制查询返回的行数。例如,要获取大表的前 5 行:

Statement stmt = con.createStatement();  
stmt.setMaxRows(5); 
ResultSet rs = stmt.executeQuery("SELECT * FROM myLargeTable");
于 2013-04-09T23:32:10.480 回答