2015-06-08 79 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個並不重要,只是在那裏放了一個號碼 –