如何解决在列中插入一个新值,并且应该为其他列值添加这个新值
我有一个包含 2 列的表格:
id field_name
111 A
111 B
111 C
189 A
189 B
189 C
我想为我的所有 ID 添加一个新的 field_name "D"。我的表将有 6000 多个不同的 ID。常规插入不起作用。
需要如下输出:
id field_name
111 A
111 B
111 C
111 D
189 A
189 B
189 C
189 D
解决方法
您可以像这样使用 insert ... select
:
insert into mytable(id,field_name)
select distinct id,'D' from mytable
这会为每个 id
创建一行,常量值为 'D'
作为 field_name
。
如果你想避免已经存在的元组,如果有的话:
insert into mytable(id,'D' from mytable
where not exists (select 1 from mytable t1 where t1.id = t.id and t1.field_name = 'D')
或者,出于同样的目的,您可以对值的元组设置唯一索引或约束,并使用 on conflict
。
create unique index myidx on mytable(id,field_name);
insert into mytable(id,'D' from mytable
on conflict (id,fieldname) do nothing;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。