2014-12-05 189 views
2

我有一个记录了它的时间戳的表。现在我有一个要求,通过发送缓慢起伏两台数据库调用,以获得最老的记录和最新记录在一个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

回答

5

您可以使用maxmin获得最新和最古老的时间戳

select max(timestamp), min(timestamp) from mytable 
+0

对不起,从同一张桌子! – 2014-12-05 04:26:31

+0

您需要使用大写的“TIMESTAMP”,并且在TIMESTAMP上创建索引也会有所帮助。 – Tom 2014-12-05 04:28:37

1

尝试用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