sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Räkna rader och vänster join problem

Jag skulle välja något som:

SELECT 
    c.id AS campaign_id, 
    COUNT(cc.id) AS code_count
FROM 
    campaigns c
LEFT JOIN campaign_codes cc on cc.campaign_id = c.id
AND cc.status = 0 -- Having this clause in the WHERE, effectively makes this an INNER JOIN
WHERE c.partner_id = 4
GROUP BY c.id

Flytta AND till join-satsen gör att sammanfogningen lyckas eller misslyckas, vilket är avgörande att de resulterande raderna behålls där det inte finns någon matchande rad i den "rätta" tabellen.

Om det fanns i WHERE , skulle jämförelser med NULL (där det inte finns någon kampanjkod) misslyckas och tas bort från resultaten.



  1. SQL Server-säkerhetskopiering/återställning kontra ta bort/fästa

  2. MySQL-fråga för att dra objekt, men alltid visa en viss överst

  3. Anslut till en MySQL-server över SSH i PHP

  4. MariaDB UNION Operatör förklaras