Получение отличного счета из двух таблиц - PullRequest
1 голос
/ 02 марта 2020

У меня есть две таблицы, например 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 ]

3 голосов
/ 02 марта 2020

Использование UNION:

select count(*)
from (select login_id 
      from table1 union -- WILL REMOVE DUPLICATE
      select login_id 
      from table2
     ) t;
2 голосов
/ 02 марта 2020

Вы можете использовать union all и агрегацию:

select count(distinct login_id) no_distinct_logins
from (
    select login_id from table1
    union all select login_id from table2
) t
...