我试图从查询中获取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,我什么都没得到。
我意识到这里有类似的问题,但在这个具体案例中没有帮助。有什么想法吗?
答案 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
。