【问题标题】:SELECT min and max value from a part of a table in MySQL从 MySQL 表的一部分中选择最小值和最大值
【发布时间】:2011-06-24 20:58:36
【问题描述】:

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

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

但这不起作用。

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

【问题讨论】:

  • 定义“前十行”。您使用什么字段来确定行顺序?
  • 检查我的答案以获得任意范围的行

标签: sql mysql max min


【解决方案1】:
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);

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

【讨论】:

  • 谢谢!这正是我需要的。最后的查询是 SELECT min(t1.price) as min_price, max(t1.price) as max_price FROM (SELECT price FROM ko_base_kk_old ORDER BY price LIMIT 0,10) as t1
  • 为了您的理解,我已经更新了更多内容。不客气 :)
【解决方案2】:

你试过了吗:

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

【讨论】:

  • 哎呀我也有同样的答案:)
  • @reggie:是的。您甚至可以在第二个SELECT 中使用order by。他只需要知道他可以在第二个中获取任何price 列表,并且由于第一个选择而只获取minmax。看起来很合乎逻辑。无论如何,由于 OP 没有回答 @JNK,因此您无法知道此处是否需要 OFFSET
猜你喜欢
  • 2015-02-22
  • 2011-12-14
  • 2018-08-24
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多