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