2012-07-06 54 views

回答

0

您可以使用像一個LIMIT條款(MySQL docu)在下面的代碼,但要知道,除非你申請某種(ORDER BY col),實際行的排序,即輸出可能會有所不同,因爲是在SQL表中沒有內部排序。

SELECT * 
    FROM yourTable 
    LIMIT 1,1 

更好的解決方案將是,以一個附加列id添加到表中,然後由該id選擇。或者至少使用前面所述的id列進行排序。

+0

謝謝你..它給我第三排的價值..不是第二排。實際上在限制2,1什麼是2和1代表什麼? – Luna 2012-07-06 10:50:41

+0

@Tickua我的不好。 「LIMIT」是基於零的 - 糾正了一個。從文件中可以看到,第一個值是偏移量(您想要開始的行數),第二個值是您想要總計的行數。 – Sirko 2012-07-06 10:55:42

+0

行..錶行索引從0開始?如果我有5行,它將從0到4? – Luna 2012-07-06 11:00:48

3

「我想檢索第二行的值。」

這個問題對關係數據庫沒有意義。在關係數據庫中,沒有行順序的內在概念,因此不存在「第一行」或「第四行」等等。

在關係數據庫中,表應該有一個或多個鍵。關鍵是一列或其組合,它們不能爲NULL,並且對於任何不同的值組合,最多隻有一行。然後您可以使用該鍵來檢索行。

可能有必要在行上施加特定順序,之後您可以按順序位置引用行。使用ORDER BY完成排序,然後使用確定順序的表達式列表,然後使用LIMIT子句來指定要檢索的結果的哪個「切片」。

其他答案提到了LIMIT,但省略了ORDER BY子句。這意味着您有零保護,無論您現在執行完全相同的查詢,下一次將返回行#x。

不是行的思維爲具有位置,你應該考慮有一個關鍵行,並用它來獲取特定行,像這樣:

SELECT ... 
FROM table 
WHERE column1 = value 

,或者如果你有一個複合鍵(在關鍵的多個列),像這樣:

SELECT ... 
FROM table 
WHERE column1 = value1 
AND column2 = value2 
... 
AND columnN = valueN 

如果你真的仍想使用位置時,一定要使用ORDER BY強加命令:

SELECT ... 
FROM table 
ORDER BY column1, ..., columnN 
LIMIT <offset>, <count> 

其中是一個指定序號位置的整數字面值,它是一個整數字面值,指定從該位置開始讀取多少行。

+0

ok ..感謝您的解釋..但我有一個jTable,並且顯示在jTable中的值與數據庫表中的值相同,假設第一個值的jTable將是數據庫表的第一行值,如果我把一個特定的鍵我可以很容易地檢索到相應的值。但在這種情況下沒有特定的鍵,所以我想要一個解決方案,以這種方式選擇值.. – Luna 2012-07-06 10:57:56

+0

如果沒有鑰匙,那麼這就是你應該先解決的問題。就像我說的那樣,除非你明確強加一行,否則對行的順序沒有任何保證。另見http://stackoverflow.com/questions/2040724/how-does-sql-server-sort-your-data/2040833#2040833 – 2012-07-06 11:09:23

+0

好吧..我會試着..謝謝你.. – Luna 2012-07-06 11:17:15