内部连接postgresql-如何使“id”在两个表中相同

w6mmgewl  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(436)

这是我的表,我想用“testuser\u id”将它们连接在一起。如何使“testuser\u id”与testuser中的地址相同。

create table testuser ( 
    testuser_id serial,
    testuser_name varchar(100),
    testuser_number int,
    primary key(testuser_id)
)

create table adress( 
    adress_id serial,
    testuser_id int,
    adress_code int,
    street varchar(200),
    primary key(adress_id)
)

insert into testuser (testuser_name, testuser_number) values ('fnsnfsdfpi', 645645), ('fsdgfdg', 4634643)

insert into adress (adress_code, street) values (3453, 'gdfghdf'), (6463, 'gdgdgdg')

所以当我跑的时候

select testuser.testuser_id ,testuser_name,testuser_number,adress_code,street 
from testuser INNER JOIN
     adress
     ON adress.testuser_id = testuser.testuser_id

我得到一个表,然后把数据插入其中

如果有人得到了我要做的事,请帮帮我:)

qgzx9mmu

qgzx9mmu1#

嗯。我知道你想把table排成一行。如果是这样的话,你可以用cte和 insert 声明:

with tu as (
      insert into testuser (testuser_name, testuser_number)
          values ('fnsnfsdfpi', 645645), ('fsdgfdg', 4634643)
          returning *
    )
insert into adress (adress_code, street, testuser_id)
    select v.adress_code, v.street, tu.testuser_id
    from (select v.*, row_number() over () as seqnum
          from (values (3453, 'gdfghdf'),
                       (6463, 'gdgdgdg')
               ) v(adress_code, street)
         ) v join
         (select tu.*, row_number() over (order by testuser_id) as seqnum
          from tu
         ) tu
         on tu.seqnum = v.seqnum;

这是一把小提琴。

相关问题