我想知道从我的表中检索 5 个最新行的 sql 命令?下面是我的 sql 查询。我该怎么做,才能选择 第 5 行的最新行 进行处理?
$query =
"SELECT lat, lng, DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS
datetime FROM markers1 WHERE 1";
最佳答案
您需要对结果进行排序,并设置一个限制。
假设 datetime 是您想要订购的时间:
$query = "
SELECT
lat,
lng,
DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime
FROM markers1 WHERE 1
ORDER BY datetime DESC
LIMIT 5
";
编辑: 要回答 OP 的评论:“我得到的结果是第 50 行的第一个查询开始,然后是 49、48、47、46 是否有可能我可以从第 46、47、48、49、50 行开始?”
您可以使用 PHP 中的结果执行此操作,方法是获取行并将它们存储在数组中,然后反转数组。 我不相信您可以有效地反向循环遍历 mysql 结果资源。
要在 SQL 查询中执行此操作,您需要使用原始查询创建一个临时表:
$query = "
SELECT
lat,
lng,
DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime
FROM (
SELECT
lat,
lng,
datetime
FROM markers1 WHERE 1
ORDER BY datetime DESC
LIMIT 5
) AS tmp_markers
ORDER BY datetime ASC
";
初始查询的结果用作在新查询中搜索的表,该查询按日期时间升序排序。我必须在外部查询上应用 DATE_FORMAT,因为我们需要日期时间字段再次排序。
关于php - 如何从我的 mysql 中选择 5 个最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307224/