如何选择具有优先级第一个表的不同 UNION
Posted
技术标签:
【中文标题】如何选择具有优先级第一个表的不同 UNION【英文标题】:How to select Distinct UNION with priority 1st table 【发布时间】:2018-10-18 13:21:28 【问题描述】:如何编写独特的联合查询,忽略所有表中的一列。
我想从两个具有相同字段名称的表中选择数据并插入到第三个表中,但数据应该是唯一的,除了一个字段(应该考虑第一个表行号)
CREATE TABLE table_a
(
id INTEGER ,
name TEXT,
rownumber TEXT
) ;
CREATE TABLE table_b
(
id INTEGER ,
name TEXT,
rownumber TEXT
) ;
CREATE TABLE table_c
(
id INTEGER,
name TEXT,
rownumber TEXT
) ;
INSERT INTO
table_a
(id, name, rownumber)
VALUES
(1001, 'Alex' , '111'),
(1002, 'John' , '112'),
(1003, 'Max' , '113'),
(1004, 'Joly' , '114'),
INSERT INTO
table_b
(id, name, rownumber)
VALUES
(1005, 'Angila', '211'),
(1002, 'John' , '212'),
(1006, 'Tim' , '213'),
预期的 Table_c 应该是唯一的 id 和 name 从 "table_a" + "table_b" 和 "rowversion" 应该从 table_a 考虑
结果为:-
(1001, 'Alex' , '111'),
(1002, 'John' , '112'), // From 1st table
(1003, 'Max' , '113'),
(1004, 'Joly' , '114'),
(1005, 'Angila', '211'),
(1006, 'Tim' , '213'),
【问题讨论】:
【参考方案1】:用not exists
怎么样?
select a.*
from table_a a
union all
select b.*
from table_b b
where not exists (select 1 from table_a a where a.id = b.id and a.name = b.name);
【讨论】:
非常感谢您的快速回复 @skt 接受响应作为答案怎么样,以便将来遇到类似问题的任何人都可以找到“答案”。这就是 SO 的工作原理。以上是关于如何选择具有优先级第一个表的不同 UNION的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Access 中对表的所有列进行 UNION ALL
我有一个基于所选城市长度不同的对象数组。如何选择包含具有特定属性的对象的元素?