如何在SQL中使用新的唯一主键从联接中创建表?

时间:2018-12-01 22:44:09

标签: sql join teradata outer-join

我试图在两个表之间进行完全外部联接,并在Teradata SQL中为结果添加唯一的ID。

Example:
__Table A__
id  col1
1   hi
2   hello

__Table B__
id  col1
1   hey
4   whatsup

_Table C (result full outer join)_
a_id  b_id  a_col1  b_col1
1     1     hi      hey
2     null  hello   null
null  4     null    whatsup  

如何为表C添加唯一的主键?我想要以下内容:

_Table D (result full outer join with primary key "id")_
id    a_id  b_id  a_col1  b_col1
123   1     1     hi      hey
234   2     null  hello   null
567   null  4     null    whatsup  

我尝试过的事情:

create table table_c as (
select
  a_id,
  b_id,
  a.col1 as a_col1,
  b.col1 as b_col1
from table_a as a
full outer join table b
  on a.id = b.id
)

with data primary key (a_id)

上面的问题是,它希望使用1个主键来创建表,但是a_id和b_id在table_c中都不是唯一的。

1 个答案:

答案 0 :(得分:0)

也许您真正想要的是将两个id合并为一个列:

create table table_c as
    select coalesce(a.id, b.id) as id
           a.col1 as a_col1,
           b.col1 as b_col1
    from table_a as a full outer join
         table b
          on a.id = b.id;

假设两个表中都没有重复项,并且id不是null,那么这应该作为主键。