Java 在WHERE子句中使用行号

Java 在WHERE子句中使用行号,java,sql,derby,Java,Sql,Derby,我正在尝试根据currentQuestion integer检索字符串值。然而,我在文档中读到,ROW_NUMBER不能在带有JavaDerby的WHERE子句中使用。是否有其他函数允许我根据行号筛选结果?到目前为止,我已经写了这篇文章,尽管我在getQuestion字符串上遇到了错误 public String getQuestion(int currentQuestion) throws SQLException { Statement statement = connect

我正在尝试根据currentQuestion integer检索字符串值。然而,我在文档中读到,ROW_NUMBER不能在带有JavaDerby的WHERE子句中使用。是否有其他函数允许我根据行号筛选结果?到目前为止,我已经写了这篇文章,尽管我在getQuestion字符串上遇到了错误

public String getQuestion(int currentQuestion) throws SQLException {
        Statement statement = connection.createStatement();

        String getQuestion = ("SELECT QUESTION FROM GAME_TABLE WHERE ROW_NUMBER = ?");
        PreparedStatement preStatement = connection.prepareStatement(getQuestion);
        preStatement.setString(1, Integer.toString(currentQuestion));
        ResultSet resultSet = preStatement.executeQuery();

        System.out.println("Question " + Integer.toString(currentQuestion) + " retrieved.");

        return resultSet.getString(1);
    }
当然,这个答案将类似于获取整个表后的处理


当然,这个答案将类似于获取整个表后的处理,您可以使用
CTE
如下:

WITH CTE As(
SELECT QUESTION, ROW_NUMBER() OVER (Arguments you want) As RN
FROM GAME_TABLE
)
SELECT *
FROM CTE
WHERE RN = ?;
或者,子查询,如:

SELECT T.*
FROM ( SELECT QUESTION, ROW_NUMBER() OVER (Arguments you want) As RN
FROM GAME_TABLE ) As T
WHERE T.RN = ?;

您可以使用
CTE
,如:

WITH CTE As(
SELECT QUESTION, ROW_NUMBER() OVER (Arguments you want) As RN
FROM GAME_TABLE
)
SELECT *
FROM CTE
WHERE RN = ?;
或者,子查询,如:

SELECT T.*
FROM ( SELECT QUESTION, ROW_NUMBER() OVER (Arguments you want) As RN
FROM GAME_TABLE ) As T
WHERE T.RN = ?;


得到的错误是什么?可以使用
CTE
或子查询
java.sql.SQLSyntaxErrorException:语法错误:在第1行第50列遇到“=”。
得到的错误是什么?可以使用
CTE
或子查询
java.sql.sqlsyntaxerException:语法错误:在第1行遇到“=”,第50列。
嘿,谢谢你,第
行出现错误,找不到适合createStatement(int)的方法。
。该错误仅在我添加ResultSet.TYPE\u SCROLL\u敏感于连接行时出现。嘿,感谢编辑的代码,createConnection方法不存在。我会再多搜索一点,谢谢:)对不起,你现在可以用更新的。。它会起作用的,谢谢你,因为在第
行中发现了一个错误,没有找到适合createStatement(int)
的方法。该错误仅在我添加ResultSet.TYPE\u SCROLL\u敏感于连接行时出现。嘿,感谢编辑的代码,createConnection方法不存在。我会再多搜索一点,谢谢:)对不起,你现在可以用更新的。。谢谢,我试了一下,结果是
java.sql.SQLException:无效的游标状态-没有当前行
。这是因为我在Over()函数参数中没有提供参数吗?@TheChosenOne你必须使用参数,比如
Over(orderby ID ASC)
Derby不支持常用的表表达式,也不支持
order by
row\u number()
@a\u horse\u没有名字他可以使用subqueyThank You,我试了一下,并导致
java.sql.SQLException:无效的光标状态-无当前行
。这是因为我在Over()函数参数中没有提供任何参数吗?@TheChosenOne您必须使用参数,例如
Over(orderby ID ASC)
Derby不支持常用的表表达式,并且它不支持
row\u number()中的
order by
@a\u horse\u(没有名字)他可以使用subquey