这个问题在这里已经有了答案:
mysql count不能显示0个值(1个答案)
两年前关门了。
在存储过程中,我创建并填充一个临时表(tmpallusers),其列为user\u id(int)、first\u name(varchar)和last\u name(varchar)。在数据库中,我有另一个表(actions),它记录了用户每次完成特定操作的情况。该表的列是user\ id(int)、action(int)和actiondate(datetime)。
要显示用户在某个时间范围内完成的操作数,很容易:
SELECT first_name, last_name, actionCount
FROM tmpAllUsers
INNER JOIN (
SELECT user_id, count(*) as actionCount
FROM Actions
WHERE action = 1 and
actionDate >= @sDate and actionDate < @eDate
GROUP BY user_id ) x
ON tmpAllUsers.user_id = x.user_id;
挑战是返回一个包含所有用户的表,包括那些actioncount=0的用户。我尝试的第一种方法使用联合,但在mysql中,临时表不能在同一查询中使用两次。我的第二个想法是使用外部联接,但是不重用临时表的问题也出现了。
你能建议一个可行的方法吗?
1条答案
按热度按时间5fjcxozz1#
如果我理解正确,您还希望包括没有与内部查询限制匹配的操作的用户,在这种情况下,您可以使用left join,当actioncount为null时,替换为零,如下所示: