在一个SQL查询中选择最大值和最小值
问题描述:
我有一个记录了它的时间戳的表。现在我有一个要求,通过发送缓慢起伏两台数据库调用,以获得最老的记录和最新记录在一个SQL查询中选择最大值和最小值
9/10/2014 6:54
9/10/2014 6:53
9/10/2014 6:51
9/8/2014 8:09
9/8/2014 7:00
9/5/2014 7:38
9/5/2014 3:57
9/5/2014 3:51
9/4/2014 11:09
9/4/2014 8:39
目前我这是怎么获得这些处理
$new_timestamp = mysql_query("SELECT TIMESTAMP FROM $rectable ORDER BY TIMESTAMP DESC LIMIT 1");
$col_old = mysql_fetch_assoc($new_timestamp);
$old = $col_new['TIMESTAMP'];
$new_timestamp1 = mysql_query("SELECT TIMESTAMP FROM $rectable ORDER BY TIMESTAMP ASC LIMIT 1");
$col_new = mysql_fetch_assoc($new_timestamp1);
$new = $col_new['TIMESTAMP'];
有什么办法来优化这个代码和fullfiill要求,而无需发送两个数据库调用,througha特殊查询或存储proceedure
答
您可以使用max
和min
获得最新和最古老的时间戳
select max(timestamp), min(timestamp) from mytable
答
尝试用UNION
select TIMESTAMP as old FROM $rectracktable ORDER BY TIMESTAMP DESC LIMIT 1
union all
select TIMESTAMP as new FROM $rectable ORDER BY TIMESTAMP ASC LIMIT 1
+0
对不起它从同一个表 – 2014-12-05 04:26:05
+0
如果你有相同的表还将努力。但是,在这种情况下,@FindTree的解决方案更加优雅。我以为你有两张不同的桌子。 – 2014-12-05 04:27:09
对不起,从同一张桌子! – 2014-12-05 04:26:31
您需要使用大写的“TIMESTAMP”,并且在TIMESTAMP上创建索引也会有所帮助。 – Tom 2014-12-05 04:28:37