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

SQL Server两张表日期列比较,筛选表A有但表B无更晚日期的数据

解决方案

你要筛选表A中不存在同TOOLS值且日期更晚的表B记录的条目,优先推荐使用NOT EXISTS写法,兼容性更高,也能避免NOT IN碰到NULL值返回异常的问题。

可用查询语句

SELECT A.TOOLS, A.DATE
FROM A
WHERE NOT EXISTS (
    SELECT 1
    FROM B
    WHERE B.TOOLS = A.TOOLS
      AND B.DATE > A.DATE
)

逻辑说明

  • 子查询会逐行匹配表A当前记录的TOOLS值,查找表B中同TOOLS且日期晚于当前A记录的条目
  • 只要子查询匹配不到符合条件的B表记录,当前A表的这条记录就符合你的筛选要求
  • 如果你只需要返回去重的TOOLS字段,把查询第一行改成SELECT DISTINCT A.TOOLS即可

原NOT IN写法调整(不推荐)

如果要基于你现有的NOT IN语句修改,写法如下,注意该写法在B表TOOLS字段存在NULL值时会返回空结果:

SELECT TOOLS 
FROM A
WHERE (TOOLS, DATE) NOT IN (
    SELECT TOOLS, MAX(DATE) 
    FROM B 
    GROUP BY TOOLS
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:54:04