php - 使用 Group By 并返回最新的副本

标签 php mysql sql

我在表格中有 5 列,id、address、lat、lng、timesetamp,当两行在 latlng 列。

MySQL 查询

SELECT address, lat, lng FROM table GROUP BY lat, lng

问题:我设法让它通过这个查询只返回唯一的行。然而,结果似乎是最早插入数据库的重复行。如何让 MySQL 返回最新的重复行?类似于返回具有最新 timestamp

的重复行

最佳答案

这应该为每个纬度/经度组合获取具有最新时间戳的行,而不管每个组合有多少行。

SELECT
    [what you want to know about the latest row]
FROM
    table t1
    INNER JOIN
    (
        SELECT
            lat,
            long,
            max(timestamp) as latest
        FROM
            table
        GROUP BY
            lat,
            long
     ) as t2
     ON (
         t1.lat=t2.lat AND
         t1.long=t2.long AND
         t1.timestamp=t2.latest
     )

如果您只想要具有重复组合的行,则需要调整子查询以计算 GROUPed 行并使用 HAVING 来过滤它们。

关于php - 使用 Group By 并返回最新的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152306/

相关文章:

php - 禁用自动提交的副作用

php - Mysql 选择位置和排序方式

php - 自动部署多应用程序的数据库结构

PHP MySQL - 插入数据时接收邮件

mysql - 是否可以有一个始终等于另一个的 MYSQL 字段?

mysql - SQL不存在发现一些问题

php - 无法将变量 'sql_mode' 设置为“REPLACE”的值

sql - SQL 中 SELECT * 的任何缺点?

mysql - SQL 搜索以过滤 ID 列表

php - 如何将javascript数组转换为php数组