我想从我的数据库中获取一个字段最大的数据,此时我在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);
提前感谢。
答案 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)
上构建索引来最小化服务器资源。