【发布时间】:2018-10-05 22:27:36
【问题描述】:
在存储过程中,我创建并填充了一个临时表 (tmpAllUsers),其列是 user_id (int)、first_name (varchar) 和 last_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 中,一个临时表不能在同一个查询中使用两次。我的第二个想法是使用 OUTER JOIN,但出现了不重用临时表的相同问题。
您能建议一种可行的方法吗?
【问题讨论】:
标签: mysql