我正在调整现有查询,使其仅选择那些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非常陌生,所以我不明白自己在做什么错。
编辑:这是控制台查询的结果图像。我只想要其中有日期的记录。
答案 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';
感谢所有发表评论的人。我感谢您的时间和智慧。