这个update我应该如何写才对?

normandj 2014-12-17 08:55:19
a 表
姓名 部门
张三 行政部
李四 财务部

B表
姓名 部门
张三 市场部

如何使用update语句把 a表中的《张三》的部门更新为《市场部》?

我使用
update a.表
set 部门 = (select 部门 from b.表 where 姓名=a表.姓名)
where 姓名 in (select 姓名 from b.表)

语法不对
请问我应该怎么写
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloWordGirl 2014-12-22
  • 打赏
  • 举报
回复
UPDATE A SET a.department=b.department FROM tabname A LEFT JOIN tabname B ON a.name=b.name
yilanwuyu123 2014-12-22
  • 打赏
  • 举报
回复
百度搜索,update join
舞台中央的我 2014-12-20
  • 打赏
  • 举报
回复
引用 3 楼 ky_min 的回复:
UPDATE T1
SET 部门=T2.部门
FROM a T1
	JOIN b T2 ON T1.姓名=T2.姓名
这样有写法DELETE也有类似的,你可以学习学习~~
这个
Tiger_Zhao 2014-12-18
  • 打赏
  • 举报
回复
set 部门 = (select 部门 ...) 子查询可能返回多条记录,不能对一个字段进行更新,编译通不过的。
set 部门 = (select MAX(部门) ...) 加统计函数明确返回一个值应该就可以了。
不过这样的写法效率不高,SQL Server 中的标准做法是 #1 的方式。
--小F-- 2014-12-18
  • 打赏
  • 举报
回复
你的写法是DB2的写法 应该也是可以的啊 。报什么错误? SQL SERVER中可以在UPDATE后面跟INNER JOIN
还在加载中灬 2014-12-17
  • 打赏
  • 举报
回复
UPDATE T1
SET 部门=T2.部门
FROM a T1
	JOIN b T2 ON T1.姓名=T2.姓名
这样有写法DELETE也有类似的,你可以学习学习~~
无涯大者 2014-12-17
  • 打赏
  • 举报
回复

create table a
(
  FName nvarchar(10),
  DeptNm nvarchar(30)
)

insert into a select '张三', '行政部' union all 
              select '李四', '财务部' 


               
create table b
(
  FName nvarchar(10),
  DeptNm nvarchar(30)
)
insert into b select '张三', '市场部' 

--更新的SQL
update a set DeptNm=b.deptNm from a,b where a.FName=b.Fname
供参考!
无涯大者 2014-12-17
  • 打赏
  • 举报
回复

update b set 部门=a.部门 from a,b where  b.姓名=a.姓名
SQL update select结合

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧