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

MySQL双状态字段查询异常:无法正确筛选超13天记录求助

修正后的SQL语句及问题说明

你的问题出在SQL逻辑运算符的优先级上:AND的优先级高于OR,原语句的实际执行逻辑是:

(日期差超过13天 且 状态为Pending) OR 状态为Escalated

这就导致所有状态为Escalated的记录都会被筛选出来,不管日期是否符合要求。

修正方案1:用括号包裹状态条件

把两个状态的判断用括号括起来,确保日期条件同时作用于两种状态:

SELECT Field1, Field2
FROM IT
INNER JOIN Clients ON IT.ClientCode = Clients.ClientCode
WHERE ABS(DATEDIFF(CURDATE(), IT.ReviewTracked)) > 13 
  AND (IT.Status = 'Pending' OR IT.Status = 'Escalated');

修正方案2:用IN简化状态判断

用IN替代OR,逻辑更简洁直观,效果和上面一致:

SELECT Field1, Field2
FROM IT
INNER JOIN Clients ON IT.ClientCode = Clients.ClientCode
WHERE ABS(DATEDIFF(CURDATE(), IT.ReviewTracked)) > 13 
  AND IT.Status IN ('Pending', 'Escalated');

这样就能确保只返回状态为Pending或Escalated,且日期差超过13天的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:19:57