gpt4 book ai didi

Mysql count group by 和 left join 没有按预期工作

转载 作者:行者123 更新时间:2023-11-29 01:45:41 26 4
gpt4 key购买 nike

下面是一个点击跟踪链接的简单查询。我已经看过很多其他帖子,但我正在挠头。我无法使此查询正常工作,因此无法显示日历表中的所有行(每行一个日历日):

SELECT DATE_FORMAT(calendar_date, '%a %D') AS calendar_date, 
count( tracker_id ) as clicks
FROM calendar
LEFT JOIN offer_tracker USING(calendar_id)
WHERE
calendar_month = Month(CURDATE()) AND
calendar_year = Year(CURDATE()) AND ( offer_id = 4 OR offer_id IS NULL )
GROUP BY calendar_date;

它快到了,但并非日历表中的所有行都被返回,即没有星期五、六号星期二、七号星期三等:

result set

有人知道我哪里出错了吗?我应该使用子查询吗?

最佳答案

我猜 offer_id来自offer_tracker table 。当您有一个(左)外连接时,您使用 WHERE 中右表中的字段条件(如您的 offer_id = 4 ),连接实际上被取消并给出与内部连接相同的结果。

解除取消的尝试 ( offer_id = 4 OR offer_id IS NULL ) 没有像您预期的那样工作。来自 offer_tracker 的任何行与 offer_id <> 4已经通过 LEFT JOIN 但由于 WHERE 条件而被删除。所以,没有 Friday 2nd 的行如果有 offer_id 的行,将出现在结果中不同于 4这个日期。


移动offer_id = 4查看LEFT JOIN ,而是:

SELECT DATE_FORMAT(calendar_date, '%a %D') AS calendar_date
, count( tracker_id ) as clicks
FROM calendar
LEFT JOIN offer_tracker
ON offer_tracker.calendar_id = calendar.calendar_id
AND offer_id = 4
WHERE calendar_month = Month(CURDATE())
AND calendar_year = Year(CURDATE())
GROUP BY calendar_date

关于Mysql count group by 和 left join 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com