我想计算来自2个(或可能更多的表)的唯一登录次数。
我试过了:
SELECT count(distinct(l1.user_id))
FROM `log_1` l1
LEFT JOIN `log_2` l2
ON l1.userid = l2.userid;
但它给了我l1的结果。如果我没有把l1放在li.userid(distinct)上,那就说“含糊不清”。
如何组合表,然后选择组合表的唯一登录?
编辑:
测试:我测试计数(distinct(l1.userid))和count(distinct(l2.userid))。它给了我不同的结果
答案 0 :(得分:1)
如果您正在使用LEFT JOIN
,则l1中每行的组合结果中至少会有一行,因此如果您只想要一个非常计数,则完全不需要连接。这将为您提供与查询相同的结果:
SELECT count(distinct(l1.user_id))
FROM `log_1` l1
也许你想要一个INNER JOIN
或UNION
?如果用户出现在任一表格中,则UNION
将统计用户。仅当INNER JOIN
出现在两个表中时,UNION
才会计算它们。以下是SELECT count(*) FROM (
SELECT distinct(user_id) FROM `log_1`
UNION
SELECT distinct(user_id) FROM `log_2`
) T1
:
{{1}}