#表结构: 1.表一:Test1 Id name age 1 2 2.表二:Test2 Id name age 1 小明 10 2 小红 8 #实现将表Test2的name和age字段数据更新到表Test1中,按照id相等的条件 1.SQLServer多表更新方法: 语法: UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } SE
记录,推荐使用第三种,个人觉得比较好 --第一种写法,之前一直用,没有在意 UPDATE sr_t_TCodeUserReciveCfg SET fUserID=a.fUserID,fImportFlag=NULL FROM dbo.vw_userinfo AS a INNER JOIN dbo.sr_t_TCodeUserReciveCfg AS b ON a.sLoginName=b.fImportFlag WHERE b.fImportFlag IS NOT NULL --第二种写法,发现
在常见的sql中,我们经常在查询中进行多表关联查询,用的比较熟练.今天在开发中遇到一个实际业务场景是多表关联更新,一时不知所措.本着多学习的态度,没有直接写java代码去实现,终于把多表关联更新的sql弄清楚了.下面将实际业务场景进行简化,分别有person表和information表,最终目的是将 information表中的年龄更新到person表中的每个人的年龄.分别写了几个sql demo来把多表更新的知识理解透彻. 首先,在更新前,person表和information表分别如下: i
需求: 小表数据量20w条左右,大表数据量在4kw条左右,需要根据大表筛选出150w条左右的数据并关联更新小表中5k左右的数据. 性能问题: 对筛选条件中涉及的字段加index后,如下常规的update语句仍耗时半小时左右. UPDATE WMOCDCREPORT.DM_WM_TRADINGALL A SET ( A.RELATIONSHIPNO, A.PACKAGE ) = (SELECT B.RELATIONSHIPNO, CASE ' ' ' ') THEN 'BC' ') THEN 'P
表1:USERID USERNAME USERREMARK 表2:ROLEID USERID ROLENAME 其中表1的USERID与表2的USERID为关联字段. 若现在只知道ROLEID,要修改USERNAME 则sql可写为:UPDATE 表1 set 表1.USERNAME='修改的内容' FROM 表2 WHERE 表1.USERID=表2.USERID AND 表2.ROLEID='角色ID';
update tMeter set 字段= t.源自段 from ( select * from 源表信息 ) t where 关联条件 实际demo: UPDATE dbo.WX_TWODIMENCODE_INFO SET wti_scan_views=t.count FROM ( SELECT COUNT(*) AS 'count',lci_erector_scene_id FROM LOTTERY_CODE_INFO AND lci_erector_code_scantime IS NOT
create table test1 as select * from dba_objects; create table test2 as select * from dba_objects; create unique index test1_idx1 on test1(object_id); select * from test1; create table test3 as select object_id,object_name from test1 update test1 set
UPDATE new_schedules_spider_static_schedule s join new_scac_port p on p.`PORT` = s.`PORT` and p.SCAC = 'aaa' set s.PORT_CODE = p.BASIC_CODE WHERE s.SCAC = 'aaa'
正确写法2):UPDATE A SET A.mobilephone = b.mobile FROM tb_contact A,tmp_contact b WHERE A.contact_name = b.name 正确写法1):UPDATE tb_contact SET tb_contact.mobilephone = b.mobile FROM tmp_contact b WHERE tb_contact.contact_name = b.name 个人认为正确写法2比较简洁. 可以看出,表