Выберите две таблицы и игнорируйте дубликаты - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть две таблицы, мне нужно подсчитать, сколько уникальных строк существует в этих двух таблицах

Вот пример.

Master Table
--------------------------- 
topicId | category | type   
--------------------------- 
1       |    2     |   1    
2       |    2     |   1    
3       |    2     |   1    
1       |    2     |   2   
---------------------------

User Table
---------------------------
topicId | category | type
---------------------------
1       |    2     |   1
5       |    2     |   1
7       |    2     |   2
---------------------------

Идентификатор topicId не уникален, но они уникальны для каждого типа, может быть больше категорий, но это не относится к этому примеру

Я ожидаю, что результат будет 6 строк

Result
---------------------------
topicId | category | type
---------------------------
1       |    2     |   1  <- present on both, only one shows
1       |    2     |   2  <- present on master, same id as above row but diferent type
2       |    2     |   1  <- present on master
3       |    2     |   1  <- present on master
5       |    2     |   1  <- present on user
7       |    2     |   2  <- present on user
----------------------------

Сейчас я запрашиваю две таблицы и запускаю идентификаторы функция, которая удаляет дубликаты, но я думаю, что это сложно, есть ли способ подсчета строк в одном запросе?

1 Ответ

2 голосов
/ 17 февраля 2020

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

select topicId, category, type from master_table
union 
select topicId, category, type from user_table

Если вы хотите отсортировать набор результатов, то:

(select topicId, category, type from master_table)
union 
(select topicId, category, type from user_table)
order by topicId, category, type
...