Update From 的問題 

勉励前行 2010-11-12 11:45:52
UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A , B
WHERE A.ID = B.ID

這樣的關聯更新,如果表B 沒有對應記錄,A1,A2,A3 是否被Update成 NULL ?

上面語句是否相當於:
UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A INNER JOIN B ON A.ID = B.ID

另外,如果使用Left JOIN A1,A2,A3 是否被Update成 NULL ?

...全文
335 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
王向飞 2010-11-12
  • 打赏
  • 举报
回复

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:A
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'A')
AND type in (N'U'))
DROP TABLE A
GO

---->建表
create table A([AID] varchar(1),[A1] int,[A2] int,[A3] int)
insert A
select 'a',1,2,3 union all
select 'b',2,3,4 union all
select 'c',3,4,5
GO

--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:B
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'B')
AND type in (N'U'))
DROP TABLE B
GO

---->建表
create table B([BID] varchar(1),[B1] int,[B2] int,[B3] int)
insert B
select 'a','1111','2222','3333' union all
select 'b','1111','2222','3333' union all
select 'd','1111','2222','3333'
GO



--> 查询结果
SELECT * FROM A
--> 删除表格
--DROP TABLE A


--> 查询结果
SELECT * FROM B
--> 删除表格
--DROP TABLE B



UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A , B
WHERE A.AID = B.BID


SELECT * FROM A

UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A INNER JOIN B ON A.AID = B.BID

SELECT * FROM A




「已注销」 2010-11-12
  • 打赏
  • 举报
回复
给你脚本,自己去操作看结果。
CREATE TABLE #A
(
ID INT IDENTITY,
A1 VARCHAR(10),
A2 VARCHAR(10),
A3 VARCHAR(10)
)

CREATE TABLE #B
(
ID INT IDENTITY,
B1 VARCHAR(10),
B2 VARCHAR(10),
B3 VARCHAR(10)
)

INSERT INTO #A SELECT 'AA','BB','CC'
INSERT INTO #A SELECT 'DD','EE','FF'
INSERT INTO #A SELECT 'HH','XX','XX'

INSERT INTO #B SELECT '11','22','33'
INSERT INTO #B SELECT '44','55','66'
INSERT INTO #B SELECT '77','88','99'
--小F-- 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zsh0809 的回复:]
自己写个测试例子不就全明白了么?
别人告诉你,你能知道到底对不对么,你能知道他说的就是对的么?
能自己动手操作的,一定要自己去实践,这样自己收获才最大,最完善。
[/Quote]
「已注销」 2010-11-12
  • 打赏
  • 举报
回复
自己写个测试例子不就全明白了么?
别人告诉你,你能知道到底对不对么,你能知道他说的就是对的么?
能自己动手操作的,一定要自己去实践,这样自己收获才最大,最完善。
勉励前行 2010-11-12
  • 打赏
  • 举报
回复

UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A Left JOIN B ON A.ID = B.ID

使用Left JOIN , A1,A2,A3 是否被Update成 NULL ?
daishaodong 2010-11-12
  • 打赏
  • 举报
回复
这2个语句是等同效果,一样的结果
hovy_yang 2010-11-12
  • 打赏
  • 举报
回复
改变后A表中的A1,A2和B表中的一样
jwdream2008 2010-11-12
  • 打赏
  • 举报
回复
只用A.ID = B.ID的记录才会被B表对应值更新!

luoyefeng1022 2010-11-12
  • 打赏
  • 举报
回复
你在Update数据时,可以先select 一下,出来的内容就是你要跟新的,
至于你说的连接的区别,建议自己动手,再整理一下!
天-笑 2010-11-12
  • 打赏
  • 举报
回复
楼主要搞清楚 什么是 外连接 什么是内连接
baobaodebenben 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zsh0809 的回复:]
自己写个测试例子不就全明白了么?
别人告诉你,你能知道到底对不对么,你能知道他说的就是对的么?
能自己动手操作的,一定要自己去实践,这样自己收获才最大,最完善。
[/Quote]

mark

34,593

社区成员

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

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