今天要做个报表,其中用到了UPDATE 的多表更新,通常这种更新的语法我是很熟练的,但今天写好后查询分析器检查时总是提示错误:

消息 4104,级别 16,状态 1,第 1 行
The multi-part identifier "S.RetailQty" could not be bound.

我的脚本如下:

update #StorageDetail set S.RetailQty = R.Qty, S.Amount = R.Amount
  from #StorageDetail S inner join #RetailBill R 
  on (S.ShopId = R.ShopId) 
  and S.prodid = R.prodid 
  and S.color = R.color 
  and S.Size = R.Size 

经多方查询无果后,我只有自己用一个最简单的DEMO来测试我得这个更新语法结果发现了问题。

我的DEMO的代码如下:

create table #A (a char(10), b char(10),qty int)
insert into #A(a,b,qty) values('A01','0',10)
insert into #A(a,b,qty) values('A02','0',9)
insert into #A(a,b,qty) values('A02','0',9)
insert into #A(a,b,qty) values('A03','0',8)
insert into #A(a,b,qty) values('A04','0',7)
create table #B (a char(10), b char(10),qty int)
insert into #B(a,b,qty) values('A01','0',1)
insert into #B(a,b,qty) values('A02','0',2)
insert into #B(a,b,qty) values('A03','0',3)
insert into #B(a,b,qty) values('A03','0',8)
insert into #B(a,b,qty) values('A04','0',4)

alter table #a add qty2 int

update a set a.qty2 = b.qty from #a a inner join #b b
 on a.a = b.a and a.b = b.b

select * from #a
select * from #b

drop table #a
drop table #b

结果这个DEMO执行正常,在仔细比较两个更新语句发现问题处在对表使用别名上。在DEMO中我Update 后跟的表名是#a 的别名a,而我正式脚本中的Update后跟的是表名,而不是别名。后来又把这个临时表改为正式表,也是这样。这说明在一个SQL语句中如果定义了表的别名就必须使用别名,而不能再继续使用表名。否则就会出错。

洪虎

2006-10-19

转载于:https://www.cnblogs.com/eric1394/archive/2006/10/19/533886.html

错误的SQL脚本,错误消息 4104相关推荐

  1. 2016 server sql 错误53_MS SQL Server 错误53 错误17是什么?如何解决

    展开全部 53是安装程序e68a8462616964757a686964616f31333335336532被挂起 1.先运行你的安装程序,当提示挂起时,点击"确定",切记,不要退 ...

  2. sql常见语法_常见SQL语法错误以及解决方法

    sql常见语法 SQL Server Management Studio, errors can be tracked down easily, using the built in 错误列表&quo ...

  3. 转贴:Microsoft OLE DB Provider for SQL Server错误80040e37

    问题原因: 把数据库备份还原到另一个服务器时,可能会产生孤立用户的问题: 解决办法: 步骤:1.把备份的数据库还原到新的数据库服务器中( 1.1企业管理器-->1.2数据库(右键)-->1 ...

  4. 【若依(ruoyi)】quartz.sql 脚本重新导入时,遇到因foreign key外键无法删除错误#1217

    目录 前言 问题原因 解决办法1:先删除外键 解决办法2:禁用外键约束 前言 若依(ruoyi) 4.2 quartz.sql 脚本重新导入,遇到错误#1217 问题原因 在某些表上存在外键.重新导入 ...

  5. 解决方案 -SQL脚本建表产生ORA-00942错误

    解决方案 -SQL脚本建表产生ORA-00942错误 参考文章: (1)解决方案 -SQL脚本建表产生ORA-00942错误 (2)https://www.cnblogs.com/sh086/p/83 ...

  6. 事务执行sql脚本,错误后回滚

    1.手动commit,rollback -- 开启事务 START TRANSACTION; -- 关闭自动提交 SET autocommit = 0;-- 要执行的sql INSERT INTO ` ...

  7. 可恶的MSSQL 内部 SQL Server 错误。(臭BUG)

    服务器: 消息 8624,级别 16,状态 1,行 442 内部 SQL Server 错误. 郁闷了两天的问题终于得到了解决.记下来 前天突然客户反应[客户订单],用的好好的居然有"内部错 ...

  8. 由于TempDB设置错误导致SQL Server无法重启错误的解决方案

    场景: 前几天接到一个朋友的电话,说他们由于将TempDB设置错误导致SQL Server无法重启,让我帮忙看看. 他们本来是想将TempDB的文件挪动到其他路径,比如准确的脚本应该是: USE ma ...

  9. SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)...

    原文:SQL Server自动化运维系列--监控磁盘剩余空间及SQL Server错误日志(Power Shell) 需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的 ...

  10. 使用xp_readerrorlog命令读取SQL Server错误日志

    This article explores the xp_readerrorlog command for reading SQL Server error logs using T-SQL. 本文探 ...

最新文章

  1. 贝索斯:亚马逊正探讨人脸识别如何监管
  2. 完美解决小程序一维数组循环渲染列表不够用问题
  3. Visual Studio 2015 for Linux更好地支持Linux下的开发
  4. json2.js的初步学习与了解(转)
  5. Shell 编程进阶笔记
  6. jQuery的next()、nextAll()、nextUntil()方法
  7. js与C++交互及C++解析json
  8. expected initializer before
  9. 浅入深出被人看扁的逻辑回归!
  10. 12.01 晚 心情 阴雨 既然能力支撑不起自己的野心就先沉下心来努力学习好让有一天重新出现在江湖大放光芒...
  11. 关于a+b共创建了几个对象的问题
  12. sonic——可替代Elasticsearch的简单搜索引擎
  13. SpringBoot 统一异常处理最佳实践 -- 拓展篇
  14. wordpress模板
  15. Python爬虫(四)——小说下载器
  16. 谷歌工程师深度技术分析“为什么ios比android流畅
  17. VMware下如何虚拟软盘启动
  18. 进军欧罗巴:中国区块链企业何以敲开欧洲市场的大门
  19. 尚德机构营收同比大涨22.9%,高增长可持续吗?
  20. 几行JS代码防止网站在QQ和微信被举报

热门文章

  1. android 2d 漫画界面,宅男舔屏必备!动漫人物Live2d壁纸App
  2. 数据透视表mysql_MySQL查询和数据透视表
  3. 米兔机器人恐龙拼图手册_米兔积木 篇三:我与小米积木有个约会之米兔机器人平衡车版...
  4. JavaScript之时间线(代码解释)
  5. 百度地图多点路线规划_期待已久的多地点路线规划功能
  6. Maya界面编程入门:在Maya中使用Qt
  7. android系统裁剪优化
  8. javascript封装滑块
  9. 选择信号的采样频率和信号长度的技巧
  10. STM32 ADC采样频率的理解