Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL select avec sous-requête et LIMIT

Lorsque vous utilisez WHERE condition sur la table de droite d'un LEFT JOIN (Outer Join), il devient effectivement un INNER JOIN , car WHERE clause doit correspondre aux conditions. C'est pourquoi vous n'obtenez que des cas où c.active = 1 .

Vous devez déplacer le WHERE condition à LEFT JOIN .. ON .. AND .. condition :

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