例如,我有两个表 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。 希望能清楚地了解我想要什么。
答案 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