中国教程网《Photoshop专家讲堂》光盘热售参与论坛活动,快速赚取金币精品素材,中英文字体
发新话题
打印

请问一下在SQLSERVER中把一个表的一个字段的值附加到另一个表这种情况怎样解决?

请问一下在SQLSERVER中把一个表的一个字段的值附加到另一个表这种情况怎样解决?


我有两个表A和B  
在A和B中有两个相同的字段C1和C2,现在我想把B表中的C2  
的所有值更新到A表中的C2中去,以C1为识别条件,这条语句应该  
怎样写呢?小弟初识SQLSERVER还请帮忙,谢谢!  

---------------------------------------------------------------  

不要在企业管理器中打开表A/B表  

还有,你确定你的表名字段名正确吗,还有,当前数据库是你数据表所在的数据库吗,呵呵:)  

--------参见如下错误的帮助  
错误  107  
严重级别  15  
消息正文  
列前缀  ''%1!''  与查询中所用的表名或别名不匹配。  

解释  
指定了未对应于查询中指定的任何表名的列前缀。将列前缀与  FROM  子句中的表名和别名相匹配。  

该错误的一个常见起因是当提供了表的别名时使用表名。当使用表别名(ANSI  术语中的相关名称)时,Microsoft®  SQL  Server™  中的语法检查遵照  ANSI  规范。ANSI  指出  

A  <table  name>  ...  is  exposed  ...  if  and  only  if  the  <table  reference>  
does  not  specify  a  <correlation  name>.  

如果已在  FROM  子句中为表名提供了别名,则只可以使用别名来限定表中的列;表名不能在语句中的其它任何位置使用,否则将被标记为语法错误。  

作为行为上的区别的例子,假定已执行以下脚本:  

USE  Northwind  
GO  
SELECT  Customers.ContactName  
FROM  Customers  cu  
WHERE  ContactName  LIKE  'C%'  
GO  
SELECT  cu.ContactName  
FROM  Customers  cu  
WHERE  Customers.ContactName  LIKE  'C%'  
GO  

在两个  SELECT  语句中,注意尽管已提供表别名  cu  来代替表名,但还是使用了  Customers  来限定列  ContactName。这两个查询都返回以下错误信息:  

服务器:错误信息  107,级别  16,状态  3  

列前缀  ''Customers''  与查询中所用的表名或别名不匹配。  

对策  
使用对应于表的表现名称的列前缀。  

重写使用表名限定列名的所有查询。改为使用表别名。例如,以下  SELECT  语句等同于上面的语句,并使用表别名限定列:  

USE  Northwind  
GO  
SELECT  cu.ContactName  
FROM  Customers  cu  
WHERE  cu.ContactName  LIKE  'C%'  
GO  


---------------------------------------------------------------  

update  a   
set  A.c2=b.c2  
from  table1  A  left  join  table2  b  on  A.c1=B.c1

TOP

发新话题