LEFT JOIN outbox m1 on (m1.status IN (2, 4)) and WHERE m.status = 1 AND m1.status IS NULL;
То есть каждая строка из таблицы соотносится с всеми строками у которых статус 2 или 4. Далее мы берем только те, что имеют статус 1 и те, что справа NULL. Но вот не понимаю как там можно NULL получить. Делаю с тестовыми данными, m1.status всегда равен либо 2 либо 4.
находит в таблице те записи, для которых есть статус 1, но нет статусов 2,4. Задумка наверное такая, но запрос похоже не полностью. вот если здесь (m1.status IN (2, 4)) and добавить m.id = m1.id то появляется смысл.
подразумевается что в табл не должно быть другого значения для статусом m.status = 1
вот именно, что там без m.id = m1.id, там чисто "status in"
Никакого, глупый это запрос.
то, что есть вообще с синтаксической ошибкой
вот мне тоже так кажется, решим убедиться
Оказывается есть смысл. Данный запрос ничего не возвращает до тех пор, пока статусы 2 и 4 не исчезнут из таблицы.
Обсуждают сегодня