带有LIMIT的MySQL MIN()和MAX()

时间:2016-03-16 21:11:25

标签: mysql sql

我试图从查询中获取MIN()和MAX()值,以便我可以在PHP函数中使用结果值,但似乎无法解决如何执行此操作的问题,因为有一个限制。

SELECT MIN(ID) AS MinID, MAX(ID) AS MaxID 
FROM parts_listing 
WHERE BaseGroup = 0
LIMIT 0,50;

这是由分页函数使用的动态生成的LIMIT,因此在此示例中,应该给出MinID = 1和MAXID = 50,而是给出MinID = 1和MinID = 129,这是BaseGroup 0中的总记录数如果我使用任何其他BaseGroup值,它也会给出总值。如果我将LIMIT的起始记录更改为,例如,LIMIT 10,50,我什么都没得到。

我意识到这里有类似的问题,但在这个具体案例中没有帮助。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

LIMIT不限制记录使用mysql计算MIN或MAX函数的方式。匹配WHERE标准的所有记录用于计算结果

换句话说,LIMIT对聚合函数没有任何意义

LIMIT没有查看查询,只看到结果集,如果查询输出多行,限制就可以使用

您需要使用WHERE clausule来“限制”聚合函数中使用的行

答案 1 :(得分:2)

LIMIT在处理MIN / MAX应用,此时只剩下一行。

您需要将其移至派生表:

SELECT MIN(ID) AS MinID, MAX(ID) AS MaxID 
FROM
 (
   SELECT ID 
   FROM parts_listing 
   WHERE BaseGroup = 0
   LIMIT 0,50
 ) as dt

你可能也需要ORDER BY