mysql - 为什么 IS NOT NULL 语句返回所有内容
问题描述
我正在调整现有查询以仅选择那些在 Guidelineschecked 字段中包含日期的记录。当我尝试添加 u.guidelineschecked IS NOT NULL 时,它仍然返回所有记录。
SELECT t.id, t.name, t.email, u.guidelineschecked
FROM transcriber t
JOIN user u
WHERE t.id IN (SELECT tid FROM workertypeidlist WHERE workertypeid = 3)
AND t.suspended = 0
AND u.guidelineschecked IS NOT NULL;
我将查询更改为:
SELECT t.id, t.name, t.email, u.guidelineschecked
FROM transcriber t
JOIN user u ON (t.id = u.transcriberid AND u.guidelineschecked IS NOT NULL)
WHERE t.id IN (SELECT tid FROM workertypeidlist WHERE workertypeid = 3)
AND t.suspended = 0;
并且返回的记录较少,但仍然有一些记录在 Guidelineschecked 字段中包含空值。
我会假设 IS NOT NULL 会排除任何具有空值的字段。我对 mySQL 很陌生,所以我不明白我做错了什么。
编辑:这是控制台查询结果的图像。我只想要其中有日期的记录。
解决方案
咨询了别人后,我们发现该字段实际上是用零填充的,但显示为空。我不知道为什么会这样,我的老板也不知道,但我们解决了这样的问题:
SELECT t.id, t.name, t.email, u.guidelineschecked
FROM transcriber t
JOIN user u ON u.transcriberid = t.id
JOIN (
SELECT tid FROM
workertypeidlist
WHERE workertypeid = 3
) t2 on t.id = t2.tid
WHERE u.guidelineschecked > '2001-01-01';
感谢所有评论的人。我感谢你的时间和智慧。
推荐阅读
- node.js - 未找到结果时如何从 Mongoose Find 查询返回自定义消息而不是空数组
- java - name=Bad_NodeIdUnknown, value=0x80340000, quality=bad (opc ua milo WriteExample about the NodeId)
- apache-kafka-connect - 从 CDC/发件箱模式的角度看 Debezium 缩放
- python - 根据条件对数据进行分组和随机化
- python-3.x - Discord Python Bot 没有运行
- java - 未找到 Jakarta Servlet 页面
- barcode - 如何计算 GTIN 中的可变重量/价格校验位?
- csh - 如何检查变量是否包含c shell中的子字符串?
- reactjs - 一些 div 是在 react 中自动创建的
- reactjs - 图标字体并不总是在反应应用程序中正确加载