创建连接两个具有相同列但无重复的表的视图

时间:2019-06-13 18:53:23

标签: mysql sql join view union

任何人都可以帮助我如何创建连接具有相同列但没有重复的两个表的视图吗?

示例:

我有两个表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 个答案:

答案 0 :(得分:2)

您似乎想要一个优先级查询,其中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足以确定哪些记录是“重复项”。