Postgresql通过查询进行更新的操作

我就废话不多说了,大家还是直接看实例吧~

UPDATE tb1
SET c1=b.c1 ,
c2=b.c2
FROM b
WHERE tb1.c3 = b.c3 AND tb1.c4 = b.c4

补充:postgresql数据库 如果存在则更新(update),如果不存在则插入(insert)

格式:

insert into ...... on conflict(column_name) do ......

例子:

uxdb=# create table tbl_c (id int unique, name varchar(2));
CREATE TABLE
uxdb=# insert into tbl_c values (1, 'a');
INSERT 0 1
uxdb=# table tbl_c;
 id | name
----+------
 1 | a
(1 row)
uxdb=# insert into tbl_c values (1, 'a');
ERROR: duplicate key value violates unique constraint "tbl_c_id_key"
DETAIL: Key (id)=(1) already exists.
uxdb=# insert into tbl_c values (1, 'a') on conflict(id) do update set name='b';
INSERT 0 1
uxdb=# table tbl_c;
 id | name
----+------
 1 | b
(1 row)

uxdb=# 

注意:conflict(column_name)中的column_name必须是主键或具有唯一性才可以

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 查看postgresql系统信息的常用命令操作

    1.查看当前数据库实例版本. postgres=# select version(); version ----------------------------------------------------------------------------------------------------------- PostgreSQL 9.3.0 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Ha

  • 快速解决PostgreSQL中的Permission denied问题

    想开始学习SQL和Excel那本书,觉得自己亲手去输入才是正道.发现程序后续会用到窗口函数,可是我的mysql没有窗口函数,这本书所提供的数据脚本分别是MS SQL Sever和PostreSQL. 上午我先安装的sql sever,可是由于比较大且在安装时出现了一些小的问题(安装缓慢,服务启动不了).无奈选择了PostreSQL,体积小,安装顺利. 导入数据比较特别,先建一个表,然后把同名txt导入进去.一定要用unix方式的路径. copy这个语句先前在mysql上没有遇到过.学习下....

  • 查询PostgreSQL占多大内存的操作

    我就废话不多说了,大家还是直接看代码吧~ select pg_size_pretty(pg_relation_size('cuiyonghua.top_iqiyi_info')); select pg_size_pretty(pg_relation_size('cuiyonghua.top_mgtv_info')); select pg_size_pretty(pg_relation_size('cuiyonghua.top_tencent_info')); select pg_size_pre

  • 如何为PostgreSQL的表自动添加分区

    PostgreSQL 引进"分区"表特性,解放了之前采用"表继承"+ "触发器"来实现分区表的繁琐.低效.而添加分区,都是手动执行 SQL. 演示目的:利用 python 来为 PostgreSQL 的表自动添加分区. python版本: python3+ pip3 install psycopg2 一.配置数据源 database.ini 文件:记录数据库连接参数 [adsas] host=192.168.1.201 database=adsa

  • PostgreSQL的generate_series()函数的用法说明

    我就废话不多说了,大家还是直接看代码吧~ SELECT generate_series(1,12) AS month; SELECT generate_series(1,12,1) AS month; SELECT generate_series('2020-01-01'::DATE,'2020-12-31'::DATE,'1 month'::INTERVAL) AS first_of_month; 补充:PostgreSQL使用generate_series函数 填充数据(插入数据) sele

  • PostgreSQL 修改表字段常用命令操作

    --数据库.模式.表名 "identities"."Test"."tab_test" --修改字段名 ALTER TABLE "identities"."Test"."tab_test" RENAME "u_name" to realname ; --添加字段 ALTER TABLE "identities"."Test".&q

  • 使用Postgresql 实现快速插入测试数据

    1.创建常规的企业信息表 create table t_centerprises( objectid bigint not null, /*唯一编号(6位行政区号+6位sn)*/ divid uuid not null, /*行政区唯一代码*/ name text not null, /*企业名称*/ address text not null, /*企业地址*/ post text, /*企业邮编*/ contacts text, /*联系人*/ tel text, /*联系电话*/ fax

  • postgresql 导出建表语句的命令操作

    我就废话不多说了,大家还是直接看命令吧~ pg_dump -h host -U postgres -d dbname -O -s -t "table_name" > name.sql 补充:PostgreSQL使用pg_dump导出单个数据表的insert语句 PostgreSQL自带的pgadmin4工具没有办法生成数据表的insert语句,这使得想要提取单个表的数据,插入到不同环境的相同表中变成很麻烦的一件事,使用PostgreSQL的pg_dump工具可以实现该功能. 使用

  • PostgreSQL查看版本信息的操作

    1.查看客户端版本 psql --version 2.查看服务器端版本 2.1 查看详细信息 select version(); 2.2 查看版本信息 show server_version; 2.2 查看数字版本信息包括小版号 SHOW server_version_num; 或 SELECT current_setting('server_version_num'); 3.注意事项 SELECT current_setting('server_version_num');返回类型为text,

  • 基于PostgreSQL 权限解读

    1 public权限解读 用户默认情况下具有public权限,public默认具有创建和使用schema的权限,因此意味着可以在schema中创建对象(包括表).列出schema中的对象,并在其权限允许时访问它们. 所以创建数据库或schema完成后做的第一件事是 1.1 创建数据库完成后 --回收schema的public权限 --revoke all on schema public from public; --正常情况使用这个 revoke all on schema public,ti

  • 浅谈PostgreSQL消耗的内存计算方法

    wal_buffers默认值为-1,此时wal_buffers使用的是shared_buffers,wal_buffers大小为shared_buffers的1/32 autovacuum_work_mem默认值为-1,此时使用maintenance_work_mem的值 1 不使用wal_buffers.autovacuum_work_mem 计算公式为: max_connections*work_mem + max_connections*temp_buffers +shared_buffe

随机推荐