php - 如何从我的 mysql 中选择 5 个最新行

标签 php mysql phpmyadmin

我想知道从我的表中检索 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/

相关文章:

php - 为什么MySQLI INSERT不起作用?

php - 字符串仅用php中数组中的单词替换第一次出现

mysql - 如何从 mysqldump 恢复转储文件?

mysql - 使用MySQL转储每个数据库的一些数据库表

PHP三元运算符不解析类内部属性?

java - PHP While 循环调试

MYSQL SUM() 总分

php - 通过 PHP 和 MySqL 进行数据替换触发

mysql - 将所有列中的字符集 Latin1 转换为 Utf-8

mysql - 1045 无法登录MySQL服务器