2011-02-10 134 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