создать представление, объединяющее две таблицы с одинаковыми столбцами без дубликатов - PullRequest
1 голос
/ 13 июня 2019

Может ли кто-нибудь помочь мне, как создать представление, объединяющее две таблицы с одинаковыми столбцами без дубликатов?

Пример:

У меня есть две таблицы T1 и T2

T1

Id    Name    Date
-----------------------
1     AAA     2019-04-05
2     BBB     2019-04-06
3     CCC     2019-04-07

T2

Id    Name    Date
----------------------
4     DDD     2019-04-01
1     ABC     2019-03-01
2     DEF     2019-03-02

Мой выводной вид должен выглядеть следующим образом

Id    Name     Date
------------------------
1     AAA     2019-04-05  (From T1)
2     BBB     2019-04-06  (From T1)
3     CCC     2019-04-07  (From T1)
4     DDD     2019-04-01  (From T2)

Ниже приведен запрос, который я пытаюсь

CREATE VIEW view AS (
  (
    SELECT
      t1.id,
      t1.name,
      t1.date,
    FROM
      T1 as t1
    UNION 
    SELECT
      t2.id,
      t2.name,
      t2.date,
    FROM
      T2 as t2
  )

Но я получаю дубликаты записей.

1 Ответ

2 голосов
/ 13 июня 2019

Вы, кажется, хотите запрос расстановки приоритетов, с table1 приоритетами над table2.В MySQL:

select t1.id, t1.name, t1.date
from table1 t1
union all
select t2.id, t2.name, t2.date
from table2 t2
where not exists (select 1 from table1 t1 where t2.id = t1.id);

Это выбирает все строки из table1, а затем выбирает все строки из table2, которые не имеют соответствия id в table1.

Это предполагает, что id достаточно для определения того, какие записи являются "дубликатами".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...