Java “where子句”中的未知列“ROWNUM”
我读了很多关于这个问题的主题,但大多数都有一些复杂的问题,至少对我来说是这样; 我遵循了《甲骨文指南》,但当我写作时Java “where子句”中的未知列“ROWNUM”,java,mysql,jdbc,Java,Mysql,Jdbc,我读了很多关于这个问题的主题,但大多数都有一些复杂的问题,至少对我来说是这样; 我遵循了《甲骨文指南》,但当我写作时 SELECT * FROM " + tableName + " WHERE ROWNUM < 12; 我得到这个错误: “where子句”中的未知列“ROWNUM” 然后我试着按照这里建议的解决方案去做 但一切都没有改变 我的代码如下所示: sql = "SELECT C.* " + "FROM ( SELECT * " + " FROM "
SELECT * FROM " + tableName + "
WHERE ROWNUM < 12;
我得到这个错误:
“where子句”中的未知列“ROWNUM”
然后我试着按照这里建议的解决方案去做
但一切都没有改变
我的代码如下所示:
sql = "SELECT C.* "
+ "FROM ( SELECT * "
+ " FROM " + tableName + " ) C "
+ "WHERE C.ROWNUM < 12;";
resultSet = statement.executeQuery(sql);
试试这个,它将有助于解决您的问题: 选择*from选择*from+tableName+其中C.ROWNUM<12 使用下面的
resultSet=statement.executeQuerysql 试试这个:[如果你使用mysql]
sql = ""
+ "SELECT C.* "
+ "FROM ( "
+ " SELECT * "
+ " FROM " + tableName + " ) C "
+ "LIMIT 11;";
resultSet = statement.executeQuery(sql);
对于sql server:
SELECT TOP 12 ...
你可以参考
ROWNUM在Oracle中使用。假设您正在使用MySQL,因为您已将问题标记到MySQL
您可以使用limit子句更改ROWNUM
我有一个叫做cars的数据库,为什么它很重要?希望我的问题不是那么愚蠢,我是在两天前才开始学习jdbc的,所以我是一个真正的新手。这个问题只适用于Oracle,但是你用mysql标记了你的问题。使用limit 12而不是rownum。rownum是甲骨文函数。那实际上是限制11。@GordonLinoff我明白了,我以为是rownum谢谢你的回答,但据我所知,这里不是限制12,而是限制12。12并不重要,它只是为了在mysql工作台中输入一个数字,但hibernate不知何故抱怨:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:第1行附近的限制,你真的是指11而不是12,但我现在投票是因为你注意到了rownum的使用位置,并删除了子查询。哦,是的,它是11而不是12,我没有注意到@Tim3880和RubahMalam发表评论后,我搜索并找到了相同的链接。我正要回答我自己的问题,说的和你说的一样,谢谢他们,但是你更快了。谢谢大家
SELECT TOP 12 ...
SELECT * FROM " + tableName + "
LIMIT 11;