2

データベースからランダムな行を 1 つ取り出すには、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 に答える