日期:2014-05-16  浏览次数:20831 次

两表更新问题
一个表A,如下字段
ID,MyDate

另外一个表B,如下字段:
ID,YourDate

现在,要将表A中ID符合表B的ID的记录,MyDate的值全部用YourDate替换,难道非要一行一行的语句循环,更新吗?一句Sql语句能否搞定?

------解决方案--------------------
update a set MyDate=(select YourDate from b where a.id=b.id)
------解决方案--------------------
update a set a.MyDate = b.YourDate from 表A a, 表B b where a.ID = b.ID
------解决方案--------------------
update a set a.Nam=b.Nam from (select * from tb tb where Id> 4) b,tb a where b.Id=a.Id

可以的啊
------解决方案--------------------
我只是举个例子~稍微改改
------解决方案--------------------
--这样
update A inner join B on A.id=B.id set A.myDate=B.YourDate

------解决方案--------------------
update A inner join B on A.id=B.id set A.myDate=B.YourDate

-------------------
这种方式必须是两边都是表,否则不能直接使用。

如果B是带有聚合函数的查询,则不能直接使用。


可以把子查询的中间结果保存到临时表中,然后再用临时表和目标表关联更新。

------解决方案--------------------
Access使用的是Jet-SQL,而SQL Server使用的是T-SQL,两者用法上相差很大。

Access的Update语句中,对于含有聚合函数子查询的支持远比不上SQL Server,所以要使用域函数或借助临时表。


JET SQL 帮助(jet4 access2000)下载地址

http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=