您的位置:首页 > 编程语言 > Go语言

使用包含 FROM 子句的 UPDATE

2007-01-20 10:03 337 查看
如果 UPDATE 语句包含了未指定每个更新列的位置只有一个可用值的 FROM 子句(换句话说,如果 UPDATE 语句是不确定性的),则其结果将不明确。例如,对于下面脚本中的
UPDATE
语句,
Table1
中的全部两行都满足
UPDATE
语句中
FROM
子句的限定条件;但是,将使用
Table1
的哪一行来更新
Table2.
中的行是不明确的。

use test
go
create table A(ie int, sex varchar(10), age int)
insert A  select 1,'男',50
union all select 2,'女',33
create table B(id int, sex varchar(10), age int)
insert B  select 1,'男',67
union all select 1,'女',43
update A set age=B.age from B where ie=B.id
select * from A
select * from a,b where A.id=B.id
go
drop table a
drop table b
go 

当结合使用 FROM 和 WHERE CURRENT OF 子句时,可能发生同样的问题。在以下示例中,
Table2
中的全部两行都满足
UPDATE
语句中
FROM
子句的限定条件。将使用
Table2
的哪一行来更新
Table1
中的行是不明确的。

一条 UPDATE 语句永远不会对同一行更新两次

一条 UPDATE 语句永远不会对同一行更新两次如果所更新对象与 FROM 子句中的对象相同,并且在 FROM 子句中对该对象只有一个引用,则指定或不指定对象别名均可。如果更新的对象在 FROM 子句中出现了不止一次,则对该对象的一个(且仅仅一个)引用不能指定表别名。FROM 子句中对该对象的所有其他引用都必须包含对象别名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  table insert go ie 脚本