如何在排序后从 SQL 获取数据并确保重复 none

How do I fetch data from SQL after sorting and making sure none are repeated

所以我有一个数据库,table 有像 "LAT, LNG, NAME, EMAIL, DATE, TIME"

这样的标题

这是通过将 php 地图页面与数据库连接以获取数据来在地图上显示标记。

现在我的问题是:

例如: 我有电子邮件 ID 的数据集:abc@gmail.com 重复了 10 次。每个都有不同的 LAT 和 LONG。 我有电子邮件 ID 的数据集:xyz@gmail.com 重复了 10 次。每个都有不同的 LAT 和 LONG。 我有电子邮件 ID 的数据集:efg@gmail.com 重复了 10 次。每个都有不同的 LAT 和 LONG。

如何只获取最新的数据集?我只想要 3 个最新的标记,而不是 30 个标记。

我可以根据插入的日期和时间对其进行排序,但如何将其设置为只接收其中一个。

我的SQL查询:$sql = "SELECT DISTINCT email, latitude, longitude, name from test ORDER BY date DESC, time DESC";

我试过 DISTINCT 也试过 DESC LIMIT 1 但都没有得到想要的结果。也没有错误信息。我错过了什么?

请帮我解决这个问题。

问候 阿比萨

您可以使用子查询进行过滤:

select t.*
from test t
where concat(t.date, ' ', t.time) = (
    select max(concat(t1.date, ' ', t1.time))
    from test t1
    where t1.email = t.email
)

请注意,您不应将日期和时间组件存储在两个不同的列中。当您需要实际生成合法的 datetime 值时,这会使事情变得更加复杂 - 效率会因此受到影响。