У меня есть таблица, которая содержит информацию о событиях для пользователей, то есть каждая строка содержит идентификатор, дату начала пользователя, дату завершения и номер события. Пример:MySQL Intersect Query на одной таблице
Ряд 1: ID 256 | StartDate 13360500 | FinishDate 13390500 | EventNum 3
Я пытаюсь пересекаться все строки для пользователей, которые закончили события 3 & 2, но я не могу понять, почему мой запрос не возвращает никаких результатов:
SELECT table_id FROM table
WHERE table_EventNum = 3
AND table_FinishDate > 0
AND table_id IN (SELECT table_id FROM table WHERE table_EventNum = 2);
Этот запрос без подзапрос (строка, отделенная от остальных внизу) возвращает кучу ненулевых результатов, как и следовало ожидать, и подзапрос также возвращает кучу ненулевых результатов (опять же, как и должно). Но по какой-то причине составной запрос не возвращает никаких строк вообще. Я знаю, что команда IN
возвращает NULL, если выражение с обеих сторон равно NULL, но поскольку оба запроса возвращают результаты, я не уверен, что еще может вызвать это.
Любые идеи? Благодаря!
Имеет ли значение, что я только выбираю table_id вместо FinishDate и table_id? Я думал, что MySQL сначала выполнит действие SELECT, а затем выполнит команду IN (ID)? – mgh14
SELECT table_id, FinishDate FROM table WHERE table_EventNum = 3 AND table_FinishDate> 0 AND table_id IN (SELECT table_id FROM table WHERE table_EventNum = 2); - должно быть хорошо, никакой разницы – Tarik