• sql update多表关联


    一、建立测试表
    CREATE TABLE t_user (
    ID int identity PRIMARY KEY,
    UserID varchar(50) not null,
    UserName varchar(50) null,
    deptID int not null,
    phone varchar(50) null,
    fax varchar(50) null
    )

    CREATE TABLE t_dept (
    ID int identity PRIMARY KEY,
    DeptName varchar(50) null,
    phone varchar(50) null,
    fax varchar(50) null
    )

    INSERT t_user
    SELECT N'001',N'张三',1,N'88888001',N'99999001'
    UNION  ALL SELECT N'002',N'李四',2,N'88888002',N'99999002'
    UNION  ALL SELECT N'003',N'王五',2,N'88888003',N'99999003'
    UNION  ALL SELECT N'004',N'赵六',3,N'88888004',N'99999004'

    INSERT t_dept
    SELECT N'开发部',N'88888011',N'99999011'
    UNION  ALL SELECT N'市场部',N'88888022',N'99999022'
    UNION  ALL SELECT N'售后部',N'88888033',N'99999033'

    二、sql更新(每次执行update后都还原t_user数据)

    1、update t_user set u.phone=d.phone, u.fax=d.fax from t_user u, t_dept d where u.deptID=d.ID

    报错:无法绑定由多个部分组成的标识符 "u.phone"。
    2、update u set u.phone=d.phone, u.fax=d.fax from t_user u, t_dept d where u.deptID=d.ID

     

     正确

    select * from t_user

     

     ID  UserID  UserName  deptID  phone  fax
     1  001  张三  1  88888011  99999011
     2  002  李四  2  88888022  99999022
     3  003  王五  2  88888022  99999022
     4  004  赵六  3  88888033  99999033

     

     

    3、update t_user u set u.phone=d.phone, u.fax=d.fax from t_dept d where u.deptID=d.ID

    报错:'u' 附近有语法错误。

    4、update t_user set phone=d.phone, fax=d.fax from t_dept d where deptID=d.ID

    正确,结果同2

  • 相关阅读:
    OO术语表
    linux之用户管理(useradd/usermod/userdel/groupadd/groupmod/groupdel)
    Linux 线程绑核
    g++中数组定义时长度可以使用变量
    水滴石穿之C语言的底层操作(移位操作有效位数)
    ACE
    Oracle优化器介绍
    SQL优化工具
    Oracle Index 索引介绍(SQL)
    VC6.0:"Setup was unable to create a DCOM user account"的解决方案
  • 原文地址:https://www.cnblogs.com/moss_tan_jun/p/2012889.html
Copyright © 2020-2023  润新知