惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Jina AI
Jina AI
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
C
Cybersecurity and Infrastructure Security Agency CISA
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
S
Securelist
S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LINUX DO - 热门话题
博客园 - 三生石上(FineUI控件)
T
Threatpost
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
IT之家
IT之家
P
Palo Alto Networks Blog
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
Cyberwarzone
Cyberwarzone
腾讯CDC
L
LangChain Blog
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
T
Tor Project blog
AWS News Blog
AWS News Blog
T
Tenable Blog
NISL@THU
NISL@THU
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
MyScale Blog
MyScale Blog
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
量子位
美团技术团队
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog

博客园 - 洪虎

Windows环境下安装Python 建立批命令快速修改本机IP地址 网络经典命令 - 洪虎 - 博客园 “指定域的名称或安全标识SID与该域的信任信息不一致”的解决方法 建立主DNS区域和辅助DNS区域的最佳实践 无人职守安装 XP 电脑黑客基本技术和入侵的关键字以及电脑攻防应用 建立一个可修改Windows域用户密码的web页面 修复SQL2000中损坏的表 将Excel转换为CSV的VBA代码 - 洪虎 - 博客园 用命令检查电脑是否被安装木马 DateTime.ToString 方法 - 洪虎 - 博客园 在C#中自定义异常 - 洪虎 - 博客园 使用DataDynamics.ActiveReports 创建子报表 适配器模式 如何在 Reporting Services 开发基于用户权限的报表呢? 委托模式 接口模型 使用反射检查程序集,实现自动更新
错误的SQL脚本,错误消息 4104 - 洪虎 - 博客园
洪虎 · 2006-10-19 · via 博客园 - 洪虎

今天要做个报表,其中用到了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 intupdate a set a.qty2 = b.qty from #a a inner join #b b
 
on a.a = b.a and a.b = b.bselect * from #a
select * from #bdrop table #a
drop table #b

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

洪虎

2006-10-19