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;