2011-02-10 50 views
6

如果我想從整個表中選擇的最大值和最小值,我可以用這個:SELECT最小和最大價值

SELECT min(price) as min_price, max(price) as max_price FROM `prices` 

但如何從中選擇最小值和最大值只是表格的一部分?例如,我在表格中有30行。我想選擇前十行​​的最大值和最小值,然後從第二十行,然後形成最後的10

我已經試過類似

SELECT min(price) as min_price, max(price) as max_price FROM `prices` LIMIT 0,10 

但這並沒有工作。

如何用最少的查詢解決此問題?

+1

定義「前十行」。你用什麼字段來確定行順序? – JNK 2011-02-10 13:43:26

+0

檢查我的答案獲取任意行的範圍 – reggie 2011-02-10 13:53:53

回答

13
SELECT MIN(PRICE) AS MinPrice, MAX(PRICE) AS MaxPrice FROM (SELECT PRICE FROM PRICES LIMIT 10) tmp; 

此外,MySQL的有一個很酷的功能,可以讓你返回行的任意範圍(如返回的行10-20)。這對於顯示頁面記錄非常方便:

SELECT column FROM table 
LIMIT 10 OFFSET 20 

上述查詢將返回行20-30。

因此,在短期,在您的查詢的情況下,從20返回行至30,可以使用:

SELECT MIN(PRICE) AS MinPrice, MAX(PRICE) AS MaxPrice 
FROM (SELECT PRICE FROM PRICES LIMIT 10 OFFSET 20); 

你需要改變的偏移值來指定範圍的起點。

6

你試過:

SELECT min(price) as min_price, max(price) as max_price FROM 
    (SELECT price FROM `prices` LIMIT 0,10); 
+0

哎呀我有同樣的答案:) – reggie 2011-02-10 13:50:17