从postgresql以随机顺序返回数据

时间:2014-04-02 13:08:42

标签: sql postgresql

我们的Java程序是从postgreSQL中随机获取数据。怎么解决? 为了按顺序获取数据应该怎么做?

我们在postgresql中有一个名为grocery的表,其中包含0到99之间的条目.java代码以随机顺序获取整个表。

connection = DriverManager.getConnection(
        "jdbc:postgresql://localhost/test", "postgres",
        "manafara");
connection.setAutoCommit(false);
Statement st = connection.createStatement();

String sql = "Select * from grocery";


ResultSet rs = st.executeQuery(sql);
Statement st1 = connection.createStatement();

ResultSet rs1 = st1.executeQuery("Select COUNT(*) AS TOTAL from grocery");
int n = 0;
while (rs1.next()) {
    n = rs1.getInt("TOTAL");
}
System.out.println("Count: " + n);

int a = 0;

Double db[][] = new Double[n][2];
while (rs.next()) {
    db[a][0] = (double) rs.getInt(4);
    db[a][1] = rs.getDouble(6);
    a++;
}

1 个答案:

答案 0 :(得分:4)

引用documentation

  

如果未给出ORDER BY,则以系统发现最快生成的顺序返回行。

这实际上意味着,如果没有ORDER BY,就不能保证从一次执行到另一次执行将以相同的顺序提取行。

如果您需要一遍又一遍地以相同的顺序获取行,则需要在查询中添加ORDER BY子句。在你的情况下,它可能是这样的:

select * from grocery order by id

id的值必须是唯一的,以便在获取数据时保证相同的行顺序。