我有 2 个表、活动和活动代码:
营销活动:id、partner_id、状态
Campaign_codes:ID、代码、状态
我想要获取所有营销活动的所有营销活动代码的计数,其中营销活动代码.status 等于 0 或营销活动没有营销活动代码记录。
我有以下 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
我会选择类似的东西:
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
移动AND
连接子句使连接成功或失败,关键是将结果行保留在“右”表中没有匹配行的位置。
如果它是在WHERE
,与 NULL(没有campaign_code)的比较将失败,并从结果中消除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)