Wanneer u WHERE . gebruikt voorwaarde in de rechtertabel van een LEFT JOIN (Outer Join), het wordt in feite een INNER JOIN , omdat WHERE clausule moet voldoen aan de voorwaarden. Daarom krijg je alleen gevallen waarin c.active = 1 .
Je moet de WHERE . verschuiven voorwaarde om LEFT JOIN .. ON .. AND .. staat:
SELECT
p.id, c.id as category_id
FROM
(SELECT id FROM products p WHERE p.id > 6319055 ORDER BY id LIMIT 1000) prods
LEFT JOIN
products p ON p.id = prods.id
LEFT JOIN
categories c ON c.id = p.category_id
AND c.active = 1