任何人都可以帮助我如何创建连接具有相同列但没有重复的两个表的视图吗?
示例:
我有两个表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
)
但是我得到了重复的记录。
答案 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
足以确定哪些记录是“重复项”。