MySQL,在执行SELECT DISTINCT查询之前合并2个或更多表?

时间:2010-03-23 09:20:32

标签: mysql distinct

我想计算来自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))。它给了我不同的结果

1 个答案:

答案 0 :(得分:1)

如果您正在使用LEFT JOIN,则l1中每行的组合结果中至少会有一行,因此如果您只想要一个非常计数,则完全不需要连接。这将为您提供与查询相同的结果:

SELECT count(distinct(l1.user_id)) 
FROM `log_1` l1 

也许你想要一个INNER JOINUNION?如果用户出现在任一表格中,则UNION将统计用户。仅当INNER JOIN出现在两个表中时,UNION才会计算它们。以下是SELECT count(*) FROM ( SELECT distinct(user_id) FROM `log_1` UNION SELECT distinct(user_id) FROM `log_2` ) T1

的示例
{{1}}