【SQL】按某个关联列用一张表的数据更新另一张表

文章目录

    • 事件
    • 总结
    • 拓展
    • 来源

事件

写MySQL语句时,想要实现“使用某一张表中的字段值,更新另一张表中的字段值”的功能

两张表结构如下:

t1表:
在这里插入图片描述
t2表:
在这里插入图片描述
查询资料后,写出如下语句:

update t1
set aaa=t2.aaa
from t2
where bbb=t2.bbb;

执行后报错:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘from t2
where bbb=t2.bbb’ at line 3

在查询资料后发现,上述写法是SQL Server的写法,所以在MySQL中会报错

在MySQL中类似的写法为:

update t1,t2
set t1.aaa=t2.aaa
where t1.bbb=t2.bbb;

总结

MySQL中,使用某一张表中的字段值,更新另一张表中的字段值的写法之一:

update tabel_dest,table_src
set tabel_dest.attr = table_src.attr
where condition;

SQL Server中,使用某一张表中的字段值,更新另一张表中的字段值的写法之一:

update tabel_dest
set attr = table_src.attr
from table_src
where condition;

拓展

oracle写法

merge into 目标表 a
 
using 源表 b
 
on(a.条件字段1=b.条件字段1 and a.条件字段2=b.条件字段2 ……)  
 
when matched then update set a.字段=b.字段 --目标表别称a和源表别称b都不要省略
 
when  not matched then insert (a.字段1,a.字段2……)values(b.字段1,b.字段2……) --目标表别称a可省略,源表别称b不可省略

Postgres写法

UPDATE call_mz_queue_temporary aa
SET medical_card=bb.out_pat_code
FROM bbb bb
WHERE aa.out_pat_id=bb.out_pat_id AND aa.mz_queue_id BETWEEN '3298' AND '3460'

sql 把表中符合条件的多条记录的同一个字段拼接成字符串更新另一张表字段

UPDATE sys_user 
SET personnels =b.group_concat from  (Select
  sys_user_id,
  STUFF(
       (
         SELECT ',' + T.sys_personnel_id
         FROM (SELECT sys_user_id,CAST(sys_personnel_id AS CHAR(36)) sys_personnel_id FROM sys_user_personnel_detail WHERE   sys_user_id is not null and  sys_personnel_id is not null ) T          WHERE A.sys_user_id = T.sys_user_id

         FOR XML PATH('')
       ), 1, 1,''
     ) as group_concat 
FROM sys_user_personnel_detail A WHERE A.sys_user_id is not null and  A.sys_personnel_id is not null 
Group by  sys_user_id) b
 WHERE id=b.sys_user_id  

来源

Merge into用法总结
SQL(MySQL,SQL Server)更新表——用一张表的部分字段数据更新另一张表

没有粉丝,没有评论,甚至连读者都没有。因为自己写的烂,因为自己水平有限,所以自己的作品一经发出就石沉大海了,得不到任何的回信,就好像自己写的东西是给自己看的。自己的作品怎么看都好像不够完美,全身的毛病,所以读者不喜欢也很正常对吧!

其实最让我开心的是有些读者们夸我文笔不错,或许是有人第一次这样夸我的缘故吧!又或许是我写的东西没什么人认可,我感受到了一种前所未有的激动,对于未来的憧憬,对自己写下去的动力。

因为有你们,我的写作之路才不孤独,因为有你们,我才能坚持到现在,如果有一天我真的写出圈了,或许我们可以整个交流会之类的,到时候促膝长谈。

“书山有路勤为径,学海无涯苦作舟。”写作苦是苦了点,整得我差点就想放弃了,不过还好有你们。我也不急着成功,因为没有个几十年如一日的坚持,哪能轻易成功?

茫茫文海无人意,天下有君识吾心。文海很孤独,但是有诸君,便足以令我至千里。

你可能感兴趣的:(#,数据库,开发,sql,数据库)