SQL用一个表的数据更新另一张表

  

用表B的数据(B1列,B2)更新表的A1, A2列

  SQL服务器:

  
 <代码>更新一套。A1=b.B1 A.A2=B。A2的A, B, A。ID1=B。ID1和。ID2=B.ID2;  
  

访问:   

 <代码>更新A、B组。A1=B.B1 A.A2=B。B2,。ID1=B。ID1和。ID2=B.ID2;
  
  ——或
  
  更新一个内连接B上。ID1=B。ID1和。ID2=B。ID2设置。A1=B.B1 A.A2=B.B2;  
  

通过一条SQL语句一次更新多条数据. SQL语句写法略有不同,如下:

  

方法一:

  
 <代码>更新T1
  集直流=(从t2选择dc1 T1.A=t2。A1和T1.B=T2.B1)
  在T1。帮助(
  从T1选择援助
  内连接T2 t1.A=T2。A1和T1.B=T2.B1
  ) 
  

注:在我标我红色的在地方如果把在“换成‘=龅拇?但在下面的B种写法里就可以换成‘=?变成C方法写法。

  

方法二:

  
 <代码>
  更新T1
  集直流=(从t2选择dc1 T1.A=t2。A1和T1.B=T2.B1)
  在T1。帮助(
  选择T1。T2的援助
  t1.A=T2。A1和T1.B=T2.B1
  ) 
  

方法三:

  
 <代码>更新T1
  集直流=(从t2选择dc1 T1.A=t2。A1和T1.B=T2.B1)
  在T1。援助=(
  选择T1。T2的援助
  t1.A=T2。A1和T1.B=T2.B1
  ) 
  

方法四:

  
 <代码>更新T1
  集直流=(从T2选择dc1 T1.A=T2。A1和T1.B=T2.B1)
  在T1。=(
  选择T1。一个从T2
  T1.A=T2。A1和T1.B=T2.B1
  ) 
  

方法五:

  
 <代码>更新T1
  集直流=(从T2选择dc1 T1.A=T2。A1和T1.B=T2.B1)
  在T1。=(
  选择T2。从T2 A1
  T1.A=T2。A1和T1.B=T2.B1
  ) 
  

方法六:

  
 <代码>更新T1
  集直流=(从T2选择dc1 T1.A=T2。A1和T1.B=T2.B1)
  在T1。在(
  选择T2。从T2 A1
  T1.A=T2。A1和T1.B=T2.B1
  ) 
  

注:如果在上面方法改写成如下的写法将会出错。

  
 <代码>更新T1
  集直流=(从T2选择dc1 T1.A=T2。A1和T1.B=T2.B1)
  在T1。在(
  选择T1。一个从T1
  内连接T2 t1.A=T2。A1和T1.B=T2.B1
  ) 
  

此种方法将会更新掉所有符合T1。在()这个条件的数据,所以是不正确的,所以不能这样写。

  

方法七:

  
 <代码>更新T1
  集直流=(从T2选择dc1 T1.A=T2。A1和T1.B=T2。B1和T1.DC=T2.DC1)
  从T1, T2
  T1.A=T2。A1和T1.B=T2.B1  
  

方法八:

  
 <代码>更新T1
  设置T1.dc=T2.dc1
  从T1
  内连接T2 T1.A=T2。A1和T1.B=T2.B1
  t1.A=T2。A1和T1.B=T2.B1  
  

方法九:

  
 <代码>更新T1
  设置T1.dc=T2.dc1
  从T1, T2
  T1.A=T2。A1和T1.B=T2.B1  
  

请特别注意以上方法中我用红色标记上的代码写法。

  

总节:虽然是一条简单的更新语名但也有多种写法,且每种写法各有优缺点。

  

大家是否还有更简单的写法或者更容易理解的写法?如果有请提出来一起讨论,谢谢!

  

说明测试环境:以上代码在MSSQL2005中验证是可行的。

  

注:此处我用灰色标记的部分可以去掉。

SQL用一个表的数据更新另一张表