SQL server 批量修改

来源:互联网 发布:软件分发平台 编辑:程序博客网 时间:2024/05/19 16:36


一、当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰。

并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!

1.

update t1 
        set t1.c2 = t2.c2
      from t2

where t1.c1 = t2.c1

2.

Update t1 
        set t1.c2 = t2.c2

from t1 inner join t2 
        on t1.c1 = t2.c1

示例:

UPDATE temp_Org_employee   SET temp_Org_employee.mobile    = c.tele  FROM   temp_Org_employee e       INNER JOIN          (SELECT a.name, b.ID, a.tele, b.mobile             FROM    EmplTeleTb a                  LEFT JOIN                     (SELECT *                        FROM temp_Org_employee                       WHERE DepartmentId IN                                   (SELECT ID                                      FROM org_Department                                     WHERE CompanyID =                                              'T200812051418466710000194')) b                  ON a.Name = b.EmplName            WHERE a.tele <> b.mobile) c       ON e.ID = c.ID

示例2:

UPDATE temp_Org_employee    SET temp_Org_employee.mobile    = c.tele  FROM (SELECT a.name, b.ID, a.tele, b.mobile          FROM    EmplTeleTb a               LEFT JOIN                  (SELECT *                     FROM temp_Org_employee                    WHERE DepartmentId IN                                (SELECT ID                                   FROM org_Department                                  WHERE CompanyID = 'T200812051418466710000194'))                  b               ON a.Name = b.EmplName         WHERE a.tele <> b.mobile) c WHERE temp_Org_employee.ID = c.ID

示例3:

UPDATE temp_Org_employee    SET mobile = c.tele  FROM temp_Org_employee e,(SELECT a.name, b.ID, a.tele, b.mobile          FROM    EmplTeleTb a               LEFT JOIN                  (SELECT *                     FROM temp_Org_employee                    WHERE DepartmentId IN                                (SELECT ID                                   FROM org_Department                                  WHERE CompanyID = 'T200812051418466710000194'))                  b               ON a.Name = b.EmplName         WHERE a.tele <> b.mobile) c WHERE e.ID = c.ID



二、FROM 子句中指定的表的别名不能作为 SET column_name 子句中被修改字段的限定符使用。
    例如,下面的内容无效:

UPDATE temp_Org_employee 
   SET e.mobile = c.tele
  FROM temp_Org_employee e,(SELECT a.name, b.ID, a.tele, b.mobile
          FROM    EmplTeleTb a
               LEFT JOIN
                  (SELECT *
                     FROM temp_Org_employee
                    WHERE DepartmentId IN
                                (SELECT ID
                                   FROM org_Department
                                  WHERE CompanyID = 'T200812051418466710000194'))
                  b
               ON a.Name = b.EmplName
         WHERE a.tele <> b.mobile) c
 WHERE e.ID = c.ID

若要使上例合法,请从列名中删除别名 e或使用本身的表名




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 锅把手铆钉松了怎么办 蝴蝶刀铆钉松了怎么办? 孕早期吃了田螺怎么办 误吃田螺的尾巴怎么办 螺母滑丝怎么办取下来 轮胎螺丝滑丝了怎么办 固定孔螺丝滑丝怎么办 小螺丝拧不出来怎么办 小螺丝拧不下来怎么办 螺丝拧的太紧怎么办 大螺母拧不下来怎么办 大螺帽拧不出来怎么办 十字螺丝滑丝了怎么办 六角螺母拧圆了怎么办 饺子冻在盘子上怎么办 煮熟的饺子坨了怎么办 六角螺丝拧圆了怎么办 长杆螺丝滑丝了怎么办 起泡器不起泡了怎么办 不喂母乳涨奶怎么办 螺丝和螺母跟转怎么办 六棱螺丝滑丝了怎么办 苹果6螺丝滑牙了怎么办 外六角螺丝圆了怎么办 小螺丝拧花了怎么办 老人退伍证丢了怎么办 狗狗又拉又吐怎么办 孕妇吃了马兰头怎么办 怀孕吃了马兰头怎么办 吃了茭白和豆腐怎么办 电气焊加工怎么办环评 手上皮肤干燥起皮怎么办 脸上起皮怎么办还痒痒 店铺4周被释放了怎么办 炫舞账号忘了怎么办 椎基底供血不足怎么办? 脑动脉供血不足怎么办 颈椎引起的脑供血不足怎么办 军人保障卡怎么办假的 正常形态精子率低怎么办 前向运动精子21怎么办