2014-12-27 82 views
0

我有一個百萬行的MySQL表。我的查詢結果需要包含100行,並且必須按日期排序。如何選擇SQL查詢結果的特定部分?

我現在想要在查詢中添加一個子句,例如,它可以告訴數據庫「以帶有id爲'5'的行之後的行開始結果」。因此,我的結果將包括ID爲4,3,2,6,8,...的行。

親愛的讀者,尋求的數據庫嚮導能讓我擺脫不幸嗎? )

查詢:

SELECT id, type, content, date 
FROM my_table 
WHERE type = 'FI' 
ORDER BY date ASC 
LIMIT 100; 

結果:

| id | type | content | date  | 
|----|------|----------|------------| 
| 7 | FI | ContentR | 2014-01-01 | 
| 9 | FI | ContentS | 2014-01-13 | 
| 1 | FI | ContentT | 2014-02-09 | 
| 5 | FI | ContentU | 2014-03-27 | 
| 4 | FI | ContentV | 2014-03-30 | ---| 
| 3 | FI | ContentW | 2014-04-01 | | 
| 2 | FI | ContentX | 2014-06-10 | |- The result I want 
| 6 | FI | ContentY | 2014-09-03 | | 
| 8 | FI | ContentZ | 2014-12-09 | | 
...         ---| 

回答

3
SELECT id, type, content, date 
FROM my_table 
WHERE type = 'FI' 
AND date > (SELECT date FROM my_table WHERE id = 5) 
ORDER BY date ASC 
LIMIT 100; 
+0

唯一的問題是該查詢是否需要'其中type =「FI''在子查詢。從這個問題是否需要這個問題還不清楚。 – 2014-12-27 18:34:40

+0

我決定假設'id'是一個唯一的ID,所以不需要進一步的區分。 – Barmar 2014-12-27 18:35:20

+0

謝謝@Barmar,那很快! @GordonLinoff:'where type ='FI''不是問題的一部分,而是我最初的查詢的一部分,我不想刪除它.​​.. – krebas 2014-12-27 18:42:02