2014-12-05 4 views
2

У меня есть таблица, в которой есть записи с меткой времени. теперь у меня есть требование, чтобы получить самую старую запись и новейшего рекордВыберите значения max и min в одном запросе 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

Вы можете использовать max и min, чтобы получить самые новые и старые временные метки

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

жаль его из того же стола !! –

+0

вам понадобится использовать прописную букву «TIMESTAMP», а также создать индекс в TIMESTAMP. – Tom

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

жаль его из тех же таблиц –

+0

Она также будет работать, если у вас есть тот же таблица. Но в этом случае решение @ FuzzyTree более элегантно. Я думал, что у вас две разные таблицы. –

Смежные вопросы