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

SQL语句添加OR后返回异常数据,寻求技术排查协助

问题排查方案
  • 修正逻辑优先级:AND的优先级高于OR,你当前的查询逻辑等价于(companyID = 2 AND employeeID = 22 AND endTime IS NULL) OR endTime = 0,这会返回所有endTime=0的记录,不管companyID和employeeID是否匹配。正确写法应该把OR条件用括号包裹:
    SELECT id, dayType, employeeID 
    FROM records 
    WHERE companyID = 2 
      AND employeeID = 22 
      AND (endTime IS NULL OR endTime = 0)
    
  • 检查数据类型与实际值:
    • 执行SELECT endTime, companyID, employeeID FROM records WHERE endTime = 0,查看返回的记录是否真的满足companyID=2和employeeID=22。
    • 用SELECT TYPEOF(endTime) FROM records LIMIT 1确认endTime的数据类型,如果是日期/时间类型,0可能被转换为有效时间(如Unix纪元起始时间),而非你预期的空值替代。
  • 验证字符串类型的匹配问题:如果endTime是字符串类型,0可能匹配'0'、'00'等非空字符串,这些值不会被IS NULL捕获,导致加OR后出现额外记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:21:07