skt*_*skt 0 sql sql-server union-all
如何编写不同的联合查询并忽略所有表中的一列。
我想从具有相同字段名称的两个表中选择数据并插入到第三个表中,但数据应该是唯一的,除了一个字段(应考虑第一个表行号)
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'),
Run Code Online (Sandbox Code Playgroud)
预期的 Table_c 应该是来自“table_a”+“table_b”的唯一ID和名称,并且“rowversion”应该考虑来自 table_a
结果为:-
(1001, 'Alex' , '111'),
(1002, 'John' , '112'), // From 1st table
(1003, 'Max' , '113'),
(1004, 'Joly' , '114'),
(1005, 'Angila', '211'),
(1006, 'Tim' , '213'),
Run Code Online (Sandbox Code Playgroud)
使用怎么样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);
Run Code Online (Sandbox Code Playgroud)