【问题标题】:create view joining two tables having same columns without duplicates创建视图连接具有相同列且不重复的两个表
【发布时间】:2019-10-28 10:16:01
【问题描述】:

谁能帮我看看如何创建视图加入两个具有相同列且不重复的表?

例子:

我有两张桌子 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
  )

但是我得到了重复的记录。

【问题讨论】:

    标签: mysql sql join view union


    【解决方案1】:

    您似乎想要优先查询,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 中选择在table1 中没有匹配id 的所有行。

    这假定id 足以确定哪些记录是“重复的”。

    【讨论】:

    • 感谢您的回复。这个语句是什么意思 where not exists (select 1 from table1 t1 where t2.id = t1.id);?另外,上面哪个条件可以确保如果在 T1 中找到优先级的记录?
    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2021-11-25
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多