从一个查询中一个字段最大的表中获取数据

时间:2013-04-20 15:08:18

标签: php mysql sql max

我想从我的数据库中获取一个字段最大的数据,此时我在2个查询中执行此操作。事情是我不想重载服务器所以我正在寻找一种方法,使其在1查询。有什么建议? 如你所见,我正在寻找时间戳最大的条目

    $query = "SELECT MAX(TIMESTAMP) AS timestamp FROM `data`";
$run_query = mysql_query($query);
$highest = mysql_result($run_query,'0','timestamp');

$query = "SELECT * FROM `data` where `timestamp`='$highest'";
$run_query = mysql_query($query);

提前感谢。

4 个答案:

答案 0 :(得分:1)

这只会按照您的意愿运作。

SELECT  *
FROM    data
WHERE   timestamp = (SELECT MAX(timestamp) FROM data)
这个案例的

Backticks是期​​权。但实际上timestamp是一个保留关键字,但允许使用它,即使没有使用反引号转义也是如此。

答案 1 :(得分:1)

SELECT  * FROM `data` WHERE `timestamp` = (SELECT MAX(`timestamp`) FROM `data`)

答案 2 :(得分:1)

另一种方法是,如果您可以保证永远不会有两个具有相同时间戳的记录:

SELECT *
FROM data
ORDER BY timestamp DESC
LIMIT 1

如果您可以有重复的时间戳,那么使用子选择的其他答案是更好的解决方案。

答案 3 :(得分:0)

如果您的目标是最小化服务器资源,则一个查询与两个查询之间的差异非常小。引擎需要完成相同的工作。不同的是编译两个查询而不是一个查询的轻微开销。

无论采用何种解决方案,您都可以通过在data(timestamp)上构建索引来最小化服务器资源。