Postgresql两表联结更新

Postgresql两表联合更新
近日使用Postgresql感到有点不好用,一个联合更新非要这样写语法才对:
update d_routetrip
set name=b.name ,
    description=b.description 
from d_scenery  as b
where foreignid=b.id and  d_routetrip.type=‘scenery‘

如上所述,and 前的 d_routetrip表不能起别名,set后应用到此表也直接用字段表示,无需引用别名否则语法报错,而在and后引用的字段必须标明是属于哪个表的,否则也报错。好神经的用法
而普通的sql两表联合更新则简单多了,如下即可:
update Table1
set Table1.co1=Table2.co1,
       Table1.co2=Table2.co2
from Table2
where Table2.id=Table1.id

Postgresql两表联结更新

时间: 2024-08-05 22:52:12

Postgresql两表联结更新的相关文章

sql两表联合更新

标签:sql 联合更新 数据库 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://yukai.blog.51cto.com/1761494/372585 今天遇到数据库的一个更新操作. 1个数据库中有两个表(其中一个表是从另一个数据库复制来的,方法见我以前文章),这两个表通过公司名称对应起来,其中一个有称谓(Mr.,Miss.,Mrs),另一个没有,将这个表的称谓导入到另一个表中: sql:  update tb_c

MySQL 中两表关联更新数据

通过用户手机号,更新他的添加时间和过期时间,两表关联更改副表内容 UPDATE expand_money e INNER JOIN members m ON e.uid = m.id SET e.add_time=unix_timestamp(),e.expired_time=unix_timestamp()+60*60*24*7 WHERE m.user_phone = '139139139139'

数据迁移之sql server2005 中两表关联更新数据操作

近期在做数据迁移的工作,老系统的数据迁移到新系统,当中麻烦的确不少,因为是重新设计的系统与老系统中有太多的不一至性,例如表结构,字段的处理,像附件的存储方式,还有历史遗留数据... 后面会慢慢的把相关技术处理细节展现出来,当然,难度不大,只是琐碎事情太多. 今天就简单来看看数据的关联更新. 业务场景: 同一个业务,有一张主表及一张子表,字段差不多,只是老系统中主键生成方式GUID,而新的主键生成方式自增长型,这里就不论合不合理了,来看看我们的问题. 我们要做的就是把老数据导入到新表,并且保持他们

两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A、B两表时间最新的那个,B.MODIFIED

问题描述: 两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A.B两表时间最新的那个,B.MODIFIED_TM若为空就取A.MODIFIED_TM,例如: 表A ID    MODIFIED_TM 1     2013/3/10 18:07:12 2     2013/4/10 18:07:12 3     2013/5/10 18:07:12 表B ID    MODIFIED_TM 1

Oracle两表关联(join)更新字段值一张表到另一张表

[采用视图更新的方式] 有需求A表,B表,需要将B表中的name字段更新到A表中的name,两表有id关联,代码如下: update  (select a.name aname, b.name bname from A a, B b where a.id = b.id) set aname = bname; --注:两表关联属性id必须为unique index或primary key

SQL两表之间:根据一个表的字段更新另一个表的字段

1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1.id=table2.id 2. 常规方式,种写法相当于一个 Left join, 以外面的where为更新条数,如果不加where就是所有记录 update table1 set field1=(select top 1 field1 from table2 where table2.id=tab

mysql中两表更新时产生的奇葩问题,产生死锁!

如下一个两表更新语句 UPDATE hzxm201610 a,xmhzylb1201610 b SET a.gk07_1_6=b.gk04_11,a.gk07_2_6=b.f06_1,a.gk07_3_6=b.f07_1,a.gk07_4_6=b.f08_1  where   substring(a.gk01,1,4) in ('5323') and a.gk01=b.gk01 and dqdm='532300' 如果漏掉了where会怎么样: UPDATE hzxm201610 a,xmhzy

sql 两表查询后 更新某表中部分字段

这是上一个sql更新某表字段的一个延伸,在更新表数据时,实际上会有多表数据查询场景,查询后,只需要更新某一个表中的数据,以下提供两个方法, 第一种使用update 两表查询 update api_manage_apicollectioninfo_copy a, api_manage_apicollectionmanage b set a.header=replace(a.header,'XXXDDD','zhangjun') WHERE a.api_collection_id=b.id and

oracle多表关联更新

oracle的更新语句不通MSSQL那么简单易写,就算写出来了,但执行时可能会报 这是由于set哪里的子查询查出了多行数据值,oracle规定一对一更新数据,所以提示出错.要解决这样必须保证查出来的值一一对应. 原理 Update语句的原理是先根据where条件查到数据后,如果set中有子查询,则执行子查询把值查出来赋给更新的字段,执行更新. update dept a    set a.loc = (select b.loc from test_dept b where a.deptno =