2013-10-29 55 views
0

我需要從今天開始選擇40行,使用日期排序的前10個記錄。用'負數'偏移量選擇

如果MySQL支持的負偏離,它應該是這樣的:

SELECT * FROM `mytable` WHERE `date` >= '2013-10-29' ORDER BY date LIMIT -10, 40; 

負偏差不支持。我該如何解決這個問題?謝謝!!!

回答

3

使用UNION結合兩個查詢:

(
    SELECT * 
    FROM  mytable 
    WHERE date < '2013-10-29' 
    ORDER BY date DESC 
    LIMIT 10 
) UNION ALL (
    SELECT * 
    FROM  mytable 
    WHERE date >= '2013-10-29' 
    ORDER BY date 
    LIMIT 40 
) 
ORDER BY date -- if results need to be sorted 
+0

行在子查詢排序,所以我不認爲有需要重新排序。 –

+0

@ElonThan:首先,'UNION'不能保證結果集的順序將被保留。其次,即使這樣做,「UNION」左側的結果將按照日期順序排列;並且'UNION'右側的結果將按升序排列。 – eggyal