Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL seleziona con sottoquery e LIMIT

Quando usi WHERE condizione sulla tabella di destra di un LEFT JOIN (Outer Join), diventa effettivamente un INNER JOIN , perché WHERE la clausola deve soddisfare le condizioni. Ecco perché ottieni solo casi in cui c.active = 1 .

Devi spostare il WHERE condizione per LEFT JOIN .. ON .. AND .. condizione:

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