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

如何编写SQL查询筛选无历史记录的新Identifier条目?

问题分析

你的自连接查询逻辑是找出每个Identifier的最晚记录(筛选条件是当前条目没有更晚的同Identifier记录),所以1234的2022-08-11会被选中,这和你想要的结果不符。结合你的示例输出,你的真实需求是找出仅出现一次的Identifier对应的条目(即该Identifier没有任何历史或后续记录)。

正确SQL写法

方法一:子查询+分组统计

SELECT Identifier, Date
FROM YourTable
WHERE Identifier IN (
    SELECT Identifier
    FROM YourTable
    GROUP BY Identifier
    HAVING COUNT(*) = 1
)

逻辑说明:先通过分组统计找出所有只出现一次的Identifier,再筛选这些Identifier对应的条目。

方法二:窗口函数(高效适配大数据量)

SELECT Identifier, Date
FROM (
    SELECT 
        Identifier,
        Date,
        COUNT(*) OVER (PARTITION BY Identifier) AS record_count
    FROM YourTable
) AS subquery
WHERE record_count = 1

逻辑说明:用窗口函数给每个条目标记其所属Identifier的总记录数,最终只保留总记录数为1的条目。

补充:若需筛选每个Identifier的首次出现(含后续记录的情况)

如果之后你需要的是每个Identifier的第一条记录(比如1234的2022-01-01也需被选中),可以用以下写法:

SELECT Identifier, Date
FROM (
    SELECT 
        Identifier,
        Date,
        ROW_NUMBER() OVER (PARTITION BY Identifier ORDER BY Date) AS rn
    FROM YourTable
) AS subquery
WHERE rn = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:20:57