如何在排序后从 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
值时,这会使事情变得更加复杂 - 效率会因此受到影响。
所以我有一个数据库,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
值时,这会使事情变得更加复杂 - 效率会因此受到影响。