Почему оператор IS NOT NULL возвращает все - PullRequest
0 голосов
/ 22 мая 2019

Я адаптирую существующий запрос, чтобы выбрать только те записи, в которых поле проверенных рекомендаций содержит дату.Когда я пытаюсь добавить в 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;

И это возвращает меньше записей, новсе еще есть некоторые записи, которые содержат нулевое значение в поле Guidechecked.

Я бы предположил, что IS NOT NULL исключит любые поля с нулевым значением.Я очень плохо знаком с mySQL, поэтому я не понимаю, что я делаю неправильно.

РЕДАКТИРОВАТЬ: Вот изображение результатов запроса консоли.Мне нужны только записи, в которых есть даты.

database results

1 Ответ

0 голосов
/ 22 мая 2019

После консультации с кем-то еще мы обнаружили, что поле на самом деле заполнено нулями, но отображается как ноль.Я понятия не имею, почему это происходит, и мой босс тоже, но мы решили проблему следующим образом:

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

Спасибо всем, кто прокомментировал.Я ценю ваше время и мудрость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...