select gmt from history.cachemap order by gmt asc limit 0,1;
..this returns gmt: 2012-05-03
select gmt from history.cachemap order by gmt desc limit 0,1;
..this returns gmt: 2012-09-15


我正在使用的数据库有一点背景,我试图从几百万条记录的列表中获取最早和最新的日期字段。

本周早些时候,我发布了这个问题:

How to combine three MySQL queries into one?

这个问题的回答很完美,但不适用于此类查询。

最佳答案

我认为最好的方法是使用max和min函数。您可以将结果作为一行:

select min(gmt), max(gmt)
from history.cachemap


这是最有效的解决方案,因为它只涉及一次数据传递。

另外,您可以使用union all将其分为两行:

select 'min' as which, min(gmt)
from history.cachemap union all
select 'max', max(gmt)
from history.cachemap


UNION / UNION ALL不会以指定的顺序返回行,因此您应包括有关哪个行的信息(或明确地对它们进行排序)。

关于mysql - 将这两个查询合并为一个的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12518085/

10-13 07:25