You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修正MySQL查询:获取searches表中最新5个唯一域名

修正方案:获取最新的5个唯一域名

你的问题出在DISTINCT和ORDER BY的执行顺序上——DISTINCT会先对结果集去重,再进行排序,但这时候每个域名对应的id是不确定的(不同数据库的处理逻辑可能不一致),导致像google.com这种在更早记录中出现的域名,可能被关联到了旧的id,排序后就被挤出了前5。

下面提供两种可靠的解决方案,你可以根据实际需求选择:

方案1:按域名最新出现时间排序(推荐)

这个方法会先找到每个域名最近一次出现的记录ID,再按这个最新ID倒序排序,取前5个唯一域名,能准确反映域名的最新活跃情况:

SELECT domain
FROM searches
GROUP BY domain
ORDER BY MAX(id) DESC
LIMIT 5;

逻辑说明:

  • GROUP BY domain:将相同域名的记录分组
  • MAX(id):获取每组(每个域名)的最大ID,也就是该域名最新出现的记录ID
  • ORDER BY MAX(id) DESC:按域名的最新出现时间倒序排列
  • LIMIT 5:取前5个结果

方案2:从最新的N条记录中提取唯一域名

如果你需要的是最近一段时间内出现的不同域名(而不是按域名的最新出现时间排序),可以先取最新的一批记录,再从中去重:

SELECT DISTINCT domain
FROM (
    -- 先获取最新的100条记录(数值可根据实际数据调整)
    SELECT domain
    FROM searches
    ORDER BY id DESC
    LIMIT 100
) AS recent_searches
LIMIT 5;

注意事项:

  • 子查询中的LIMIT 100需要设置足够大的数值,确保能覆盖至少5个不同域名,否则结果会少于5个
  • 这种方法更适合需要聚焦“最近记录”场景,比如只看今天的搜索记录中的唯一域名

内容的提问来源于stack exchange,提问作者JKA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 03:42:53