16 sql t-sql sql-server
我得到multipart无法绑定以下查询错误
update nfltx
set
b.boxno = a.boxno,
b.message = a.message,
b.nameboxno = a.nameboxno,
b.namemsg = a.namemsg,
b.phoneboxno = a.phoneboxno,
b.phonemsg = a.phonemsg
FROM ofltx a JOIN nfltx b
ON a.ls_fullnam = b.ls_fullnam
Run Code Online (Sandbox Code Playgroud)
但如果我从boxno消息中删除b并且我没有得到错误.这背后的原因是什么?谢谢你使用sql server 2008
Raj*_*Raj 17
FROM子句中指定的表别名不能用作SET column_name中的限定符.这是无效的:
update nfltx
set
b.boxno = a.boxno,
b.message = a.message,
b.nameboxno = a.nameboxno,
b.namemsg = a.namemsg,
b.phoneboxno = a.phoneboxno,
b.phonemsg = a.phonemsg
FROM ofltx a JOIN nfltx b
ON a.ls_fullnam = b.ls_fullnam
Run Code Online (Sandbox Code Playgroud)
要使其工作,请删除b.列名称的别名.
update nfltx
set
boxno = a.boxno,
message = a.message,
nameboxno = a.nameboxno,
namemsg = a.namemsg,
phoneboxno = a.phoneboxno,
phonemsg = a.phonemsg
FROM ofltx a JOIN nfltx b
ON a.ls_fullnam = b.ls_fullnam
Run Code Online (Sandbox Code Playgroud)
拉吉
这背后的原因是什么?
一个UPDATE(和DELETE,INSERT)可以影响一个,只有一个表.您已经确定了要在此处影响的表格:
update nfltx
Run Code Online (Sandbox Code Playgroud)
因此,在子句中为赋值的左侧允许别名是没有意义的SET.它们必须是属于先前标识的表的列.
如果FROM子句中多次包含同一个表(并且它是您要更新的表),则需要提供一个别名来指示要更新表的哪个实例 - 但是您需要提供它(一次)在UPDATE条款中而不是在SET条款中.
| 归档时间: |
|
| 查看次数: |
59903 次 |
| 最近记录: |