sql >> Databasteknik >  >> RDS >> Mysql

MySQL välj med sub-query och LIMIT

När du använder WHERE skick på den högra tabellen för en LEFT JOIN (Outer Join), det blir i praktiken en INNER JOIN , eftersom WHERE klausul måste matcha villkoren. Det är därför du bara får fall där c.active = 1 .

Du måste flytta WHERE villkor för att LEFT JOIN .. ON .. AND .. skick:

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



  1. Hur omvandlar jag rader till kolumner i sql server 2005

  2. Använda flera fönsterfunktioner på samma partition

  3. Problem med MySQL-datumjämförelse

  4. Streama databaserade bilder med hjälp av HttpHandler