Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz MySQL z podzapytaniem i LIMIT

Gdy używasz WHERE warunek w tabeli po prawej stronie LEFT JOIN (Outer Join), efektywnie staje się INNER JOIN , ponieważ WHERE klauzula musi odpowiadać warunkom. Dlatego otrzymujesz tylko przypadki, w których c.active = 1 .

Musisz przesunąć WHERE warunek LEFT JOIN .. ON .. AND .. warunek:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL / MariaDB:jak znaleźć luki w danych czasowych?

  2. Optymalizacja zapytania mysql (lubi/nie lubi)

  3. Chcę usunąć wiersz z obu tabel

  4. Uciekasz przed ukośnikiem w nazwie SQL? Można go ominąć, ale SQL uważa, że ​​jest to wiele kolumn

  5. Interfejs API kalendarza Google:wybieranie/tworzenie kalendarzy?