0

我想从我的数据库中获取一个字段最大的数据,此时我在 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

4 回答 4

1

这将按您的意愿工作。

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

Backticks在这种情况下是可选的。但实际上timestamp是保留关键字,但即使不使用反引号转义也允许使用。

于 2013-04-20T15:09:08.497 回答
1
SELECT  * FROM `data` WHERE `timestamp` = (SELECT MAX(`timestamp`) FROM `data`)
于 2013-04-20T15:09:57.687 回答
1

另一种选择,如果您可以保证永远不会有两条具有相同时间戳的记录:

SELECT *
FROM data
ORDER BY timestamp DESC
LIMIT 1

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

于 2013-04-20T15:19:05.667 回答
0

如果您的目标是最小化服务器资源,那么一个查询和两个查询之间的差异确实很小。引擎需要做几乎相同的工作。不同之处在于编译两个查询而不是一个查询的轻微开销。

无论采用何种解决方案,您都将通过在data(timestamp).

于 2013-04-20T15:22:19.417 回答