如何在PostgreSQL中合并用户



我需要做一些事情来合并PGSQL中的一些用户,但我认为PGSQL不拥有merge属性。我只想知道如何让两个用户像这样匹配:

id | name | username | mail
1  | toto | tata     | toto.tata@gmail.com
2  | titi | tutu     | titi.tutu@gmail.com

在这里,我想选择我想要的数据。我想说,我只想将用户名从2合并到1,所以结果是:

id | name | username | mail
1  | toto | tutu     | toto.tata@gmail.com

您只需要为第一个id选择所有列,而您需要的第二个id的列将是选择列表中的子查询。请检查以下答案以选择合并结果。

模式和插入语句:

create table users (id int , name varchar(50), username varchar(50), mail varchar(50));
insert into users values (1  , 'toto' , 'tata'     , 'toto.tata@gmail.com');
insert into users values (2  , 'titi' , 'tutu'     , 'titi.tutu@gmail.com');

查询:

select id,name,(select username from users where id=2) username,mail from users where id=1

输出:

/tr>
id名称
1toto

您可以使用聚合:

select min(id) as id,
max(name) filter (where id = 1) as name,
max(username) filter (where id = 2) as username,
max(mail) filter (where id = 1) as mail
from t
where id in (1, 2);

这假设您想要从特定的ids中提取特定的列值。

或者您可以使用join:

select t1.id, t1.name, t2.username, t1.mail
from t t1 join
t t2
on t1.id = 1 and t2.id = 2;

如果您确实想更改数据,请使用updatedelete:

update t t1
set username = t2.username
from t t2
where t1.id = 1 and t2.id = 2;
delete from t
where t.id = 2;

这里有一个db<gt;不停摆弄