k00*_*00k 11 mysql join group-by count
我有2个表,广告系列和campaign_codes:
广告系列:id,partner_id,status
campaign_codes:id,代码,状态
我希望获得所有广告系列的所有广告系列代码的统计信息WHERE campaign_codes.status等于0或者广告系列没有campaign_codes记录.
我有以下SQL,但当然WHERE语句会删除那些在campaign_codes中没有相应记录的广告系列(我希望这些广告系列也包含零广告系列代码)
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
WHERE c.partner_id = 4
AND cc.status = 0
GROUP BY c.id
Run Code Online (Sandbox Code Playgroud)
Row*_*haw 20
我会选择以下内容:
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
Run Code Online (Sandbox Code Playgroud)
移动AND到join子句会使连接成功或失败,关键是将结果行保留在"右"表中没有匹配行的位置.
如果它在WHERE,那么与NULL(没有campaign_code)的比较将失败,并从结果中消除.
| 归档时间: |
|
| 查看次数: |
21764 次 |
| 最近记录: |