为什么IS NOT NULL语句返回所有内容

时间:2019-05-22 11:45:32

标签: mysql sql

我正在调整现有查询,使其仅选择那些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;

返回的记录较少,但是仍然有一些记录的准则检查字段中包含空值。

我假设IS NOT NULL会排除具有空值的任何字段。我对MySQL非常陌生,所以我不明白自己在做什么错。

编辑:这是控制台查询的结果图像。我只想要其中有日期的记录。

database results

1 个答案:

答案 0 :(得分:0)

在与其他人进行协商之后,我们发现该字段实际上填充了零,但显示为空。我不知道为什么会这样,老板也不知道,但是我们解决了这样的问题:

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';

感谢所有发表评论的人。我感谢您的时间和智慧。