如何选择具有优先级第一个表的不同UNION

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)

Gor*_*off 5

使用怎么样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)

  • @skt 接受该响应作为答案怎么样,以便将来遇到类似问题的任何人都可以找到“答案”。这就是 SO 的设计原理。 (2认同)