我想计算 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) 上,它会说“模棱两可”。
如何组合表,然后选择组合表的唯一登录?
编辑:
已测试:我测试了 count(distinct(l1.userid)) 和 count(distinct(l2.userid))。它给了我不同的结果
最佳答案
如果您正在使用 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
关于MySQL,在执行 SELECT DISTINCT 查询之前合并 2 个或更多表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2498669/