9

如果我想从整个表中选择最小值和最大值,我可以使用它:

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

但这没有用。

如何用最少的查询来解决这个问题?

4

2 回答 2

15
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);

您需要更改偏移值以指定范围的起点。

于 2011-02-10T13:47:08.273 回答
7

你有没有尝试过 :

SELECT min(price) as min_price, max(price) as max_price FROM 
    (SELECT price FROM `prices` LIMIT 0,10);
于 2011-02-10T13:44:56.533 回答