2017-07-21 1 views
1

ランダムな行を印刷しようとしましたが、どうしたらランダムな行を印刷できますか?java sql random row print

- データベース名テスト

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class sqlconnect { 
public static void main(String args[]) { 
try { 

Class.forName("com.mysql.jdbc.Driver"); 
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root",""); 
Statement stmt = con.createStatement(); 
ResultSet rs=stmt.executeQuery("select * from user_data ORDER BY RANDOM() OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY"); 

while(rs.next()) 

System.out.println(rs.getString(1)); 
con.close(); 
} 
catch (Exception e){ System.out.println(e);} 
} 
} 

のuser_data -table名前あなただけにLIMIT 1を使用し、その後、ランダムな行を印刷したい場合、私は、このエラーメッセージ

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OFFSET 0 ROWS FETCH NEXT 1 ROW ONLY' at line 1 

答えて

4

でこのコードを試してみてください結果セットを1つのレコードに制限するようにMySQLに指示してください:

SELECT * FROM user_data ORDER BY RAND() LIMIT 1 

コード:

ResultSet rs = stmt.executeQuery("SELECT * FROM user_data ORDER BY RAND() LIMIT 1"); 

FETCH NEXTのご利用には、SQL Serverの構文のように見える(q.v. here)。

+0

MySQLでは 'RAND()'ではなく 'RANDOM()'でなければならないと思います。 **機能TEST.RANDOM存在しない – Beginner

+1

thz –

+0

ビルド成功したが、その印刷:-)ここでは、このエラーが誰であるか疑問に思う私を残し@Beginner – sanjan