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

如何查询2019-2022有授权记录但之后无记录的客户?

筛选符合特定授权时间条件的客户列表

需求说明:

  • 关联clients表和authorization表(外键为orgid)
  • 获取2019年1月1日至2022年12月31日期间有授权记录,但2022年12月31日后无任何授权记录的去重客户
  • 以authorization.datecreated作为时间判断依据

你的原SQL语句仅筛选了指定时间段内有授权记录的客户,但未排除后续仍有记录的客户,以下是两种可行的修改方案:

方案一:使用NOT EXISTS子查询

通过子查询检查客户在2022-12-31之后是否存在授权记录,不存在则保留:

SELECT DISTINCT
    c.*
FROM
    clients AS c
JOIN
    authorization AS a ON c.orgid = a.orgid
WHERE
    a.datecreated BETWEEN '2019-01-01 00:00:00' AND '2022-12-31 23:59:59'
    AND NOT EXISTS (
        SELECT 1
        FROM authorization a2
        WHERE a2.orgid = c.orgid
        AND a2.datecreated > '2022-12-31 23:59:59'
    )

注:把原条件的< '2022-12-31 00:00:00'改成BETWEEN ... AND '2022-12-31 23:59:59',避免漏掉当天的所有记录

方案二:使用LEFT JOIN + IS NULL

先关联客户在指定时间段内的授权记录,再左关联后续的授权记录,过滤掉后续有记录的客户:

SELECT DISTINCT
    c.*
FROM
    clients AS c
JOIN
    authorization AS a ON c.orgid = a.orgid
LEFT JOIN
    authorization AS a2 ON c.orgid = a2.orgid AND a2.datecreated > '2022-12-31 23:59:59'
WHERE
    a.datecreated BETWEEN '2019-01-01 00:00:00' AND '2022-12-31 23:59:59'
    AND a2.orgid IS NULL

两种方案都能实现需求,具体性能可根据你的数据量选择,通常NOT EXISTS在多数数据库中优化效果较好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:46:05