2011-09-04 153 views
0

從MySQL中的簡單SQL查詢我怎麼才能得到5個第一個結果?
然後,我怎樣才能得到接下來的5個結果?選擇SQL查詢的一些結果

例如(僞代碼):

select * from (select * from some_table) where <first 5 results> 
select * from (select * from some_table) where <second 5 results (6-10)> 
+0

什麼能阻止你一次獲得前10個結果? – rkg

+0

不同場合的不同結果。 – Ash

回答

3

你應該能在年底拿到第5個結果與LIMIT 5您的聲明:

SELECT * FROM some_table LIMIT 5; 

然後你可以得到如下查詢結果6-10:

SELECT * FROM some_table LIMIT 5 OFFSET 5; 

再舉一個例子,你可以得到的結果與6-15這樣的查詢:

SELECT * FROM some_table LIMIT 10 OFFSET 5; 

請記住,如果你不添加ORDER BY聲明,結果是以任意順序檢索。因此,在沒有ORDER BY的情況下使用LIMITOFFSET並沒有意義。

+0

我想我的例子可能太簡單了。如果我的查詢看起來像這樣,你的解決方案仍然可以工作:'SELECT * FROM some_table where some_field> 11'? – Ash

+0

你絕對可以添加一個WHERE子句並讓事情仍然有效。真正的問題是,如果你不保證訂單,說你想要「前5行」或「6-10行」沒有意義。假設您有一張表,名稱爲「name_table」,其中有一列「first_name」,值爲「Alice」,「Bob」,「Charlie」和「Dave」。如果你做SELECT * FROM name_table LIMIT 1,你可以得到任何值,但是如果你做SELECT * FROM name_table ORDER BY first_name LIMIT 1,那麼你一定會得到「Alice」 –

+0

好吧,明白了。謝謝! – Ash

0

您可以通過一個SQL UNION

select * from (select * from some_table) where <first 5 results> 
UNION ALL 
select * from (select * from some_table) where <second 5 results (6-10)> 
做到這一點