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

MySQL 5.7查询指定日期范围内last_sent非空且last_open为NULL的记录

MySQL 5.7 查询语句修正方案

核心筛选条件

  • 目标字段组的last_sent日期落在2024-01-02至2024-06-30区间内
  • 对应组的last_open为NULL
  • 排除该字段组中last_sent与last_open均为NULL的记录

单字段组查询修正(以a_前缀组为例)

SELECT email, a_last_sent, a_last_open
FROM your_table
WHERE
  -- 限定发送日期范围
  a_last_sent BETWEEN '2024-01-02' AND '2024-06-30'
  -- 对应打开日期为空
  AND a_last_open IS NULL
  -- 排除该组双空的情况
  AND NOT (a_last_sent IS NULL AND a_last_open IS NULL);

多字段组查询修正(含a_、b_等多组字段)

如果需要筛选任意一组满足条件的记录,可使用OR组合各组条件,同时排除所有组均双空的情况:

SELECT email, a_last_sent, a_last_open, b_last_sent, b_last_open
FROM your_table
WHERE
  (
    (a_last_sent BETWEEN '2024-01-02' AND '2024-06-30' AND a_last_open IS NULL)
    OR (b_last_sent BETWEEN '2024-01-02' AND '2024-06-30' AND b_last_open IS NULL)
    -- 可继续添加其他字段组的条件
  )
  AND NOT (
    (a_last_sent IS NULL AND a_last_open IS NULL)
    AND (b_last_sent IS NULL AND b_last_open IS NULL)
    -- 若需排除单组双空,将每组的NOT判断移到对应组的条件内即可
  );

原查询问题说明

原查询使用+连接条件属于逻辑错误,MySQL中+是算术运算符,会将日期/空值隐式转换为数值,导致条件判断偏离预期。正确做法是使用AND/OR明确逻辑关系,用IS NULL直接判断空值,避免隐式转换干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:40:59