从两个表获取唯一计数

时间:2020-03-02 10:19:39

标签: mysql sql database group-by count

例如,我有两个表 table1为

╔══════════╦════════════╗
║    id    ║ login_id   ║
╠══════════╬════════════╣
║        1 ║          2 ║
║        2 ║          2 ║
║        3 ║          2 ║
║        4 ║          1 ║
╚══════════╩════════════╝

和table2为

╔══════════╦════════════╗
║    id2   ║ login_id   ║
╠══════════╬════════════╣
║        1 ║          3 ║
║        2 ║          1 ║
║        3 ║          2 ║
║        4 ║          1 ║
╚══════════╩════════════╝

我需要从没有重复的两个表中获取login_id列的计数

我尝试过

SELECT COUNT(DISTINCT t1.login_id), COUNT(DISTINCT t2.login_id) FROM table1 as t1 JOIN table2 AS t2

我知道了 COUNT(DISTINCT t1.login_id)2 COUNT(DISTINCT t2.login_id)3。

有什么办法可以使输出仅为3。 希望能清楚地了解我想要什么。

2 个答案:

答案 0 :(得分:3)

使用UNION

select count(*)
from (select login_id 
      from table1 union -- WILL REMOVE DUPLICATE
      select login_id 
      from table2
     ) t;

答案 1 :(得分:2)

您可以使用union all和聚合:

select count(distinct login_id) no_distinct_logins
from (
    select login_id from table1
    union all select login_id from table2
) t
相关问题