sql >> Base de Datos >  >> RDS >> Mysql

Selección de MySQL con subconsulta y LÍMITE

Cuando usas WHERE condición en la tabla del lado derecho de un LEFT JOIN (Unión externa), se convierte efectivamente en un INNER JOIN , porque WHERE cláusula debe coincidir con las condiciones. Es por eso que solo obtiene casos en los que c.active = 1 .

Necesitas cambiar el WHERE condición para LEFT JOIN .. ON .. AND .. condición:

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