2015-06-08 80 views
1

我读了很多关于这个问题的主题,但他们中的大多数都遇到了一些复杂的问题(至少对我来说)代码; 我按照神谕ROWNUM Pseudocolumn引导,但是当我写'where子句'中的未知列'ROWNUM'

SELECT * FROM " + tableName + " 
WHERE ROWNUM < 12; 

我得到这个错误:

Unknown column 'ROWNUM' in 'where clause'

然后我试图做这样的解决方案这里建议Select where row number = rownum 但没有任何变化。

我的代码如下所示:

sql = "SELECT C.* " 
    + "FROM (SELECT * " 
    + "  FROM " + tableName + ") C " 
    + "WHERE C.ROWNUM < 12;"; 
resultSet = statement.executeQuery(sql); 
+0

哪个数据库更改ROWNUM? –

+0

我有一个名为“汽车”的数据库,它为什么重要?希望我的问题不是那么愚蠢,我开始仅在2天前了解了jdbc,所以我是一个真正的新手 –

+3

Rownum仅适用于Oracle,但您使用mysql标记了您的问题。 – Tim3880

回答

2

你可以参考http://www.w3schools.com/sql/sql_top.asp

ROWNUM用于Oracle。假设您正在使用MySQL,因为您已将您的问题标记为MySQL。

您可以limit clause

SELECT * FROM " + tableName + " 
LIMIT 11; 
+0

你真的是指11而不是12,但我是upvoting,因为你注意了'rownum * * *使用和摆脱子查询。 –

+0

哦,是的,它的11而不是12,我没有注意到'<而不是'<='。感谢您指出。 –

+0

@ Tim3880和RubahMalam评论后我搜索并找到了相同的链接。我正要回答自己的问题,说你说的同样的话,谢谢他们,但你的速度更快。谢谢你们 –

0

试试这个它会为UR问题有所帮助:

select * from (select * from " + tableName + ") "WHERE C.ROWNUM < 12;

0

使用下面

sql = "" 
    + "SELECT C.*,ROWNUM as RECNUM " 
    + "FROM (" 
    + "  SELECT * " 
    + "  FROM " + tableName + ") C " 
    + "WHERE C.RECNUM < 12;"; 

的resultSet =语句。的executeQuery(SQL);

0

试试这个:如果你使用mysql]

sql = "" 
     + "SELECT C.* " 
     + "FROM (" 
     + "  SELECT * " 
     + "  FROM " + tableName + ") C " 
     + "LIMIT 11;"; 
resultSet = statement.executeQuery(sql); 

对于SQL Server:

SELECT TOP 12 ... 
+0

这实际上是'极限11'。 –

+0

@GordonLinoff我看到了,认为它是'rownum <= 12' – RubahMalam

+0

感谢您的回答,但根据http://www.w3schools.com/sql/sql_top.asp它不是“WHERE LIMIT 12”,而是“LIMIT 12 ”。这12个并不重要,只是在那里放了一个号码 –