16

次のクエリでマルチパートをバインドできないというエラーが表示されます

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

しかし、boxnoメッセージからbを削除すると、エラーは発生しません。この背後にある理由は何ですか。SQL Server 2008 を使用していただきありがとうございます

4

3 に答える 3

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

機能させるには、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

ラージ

于 2013-01-31T09:14:03.900 に答える
9

この背後にある理由は何ですか?

(UPDATEおよびDELETE, INSERT) は、1 つのテーブルだけに影響を与えることができます。ここで、影響を与えるテーブルを既に特定しています。

update nfltx

したがって、句で割り当ての左側にエイリアスを許可しても意味がありません。SETこれらは、以前に識別されたテーブルに属する列である必要があります。

同じテーブルがFROM句に複数回含まれている場合 (そしてそれが更新するテーブルである場合)、テーブルのどのインスタンスを更新するかを示すエイリアスを提供する必要がありますが、(1 回) 提供します。節ではUPDATEなくSET節で。

于 2013-01-31T10:02:07.487 に答える
0

ただ使う

update b 

それ以外の

update nfltx

皆さん、学んでいる人たちにとって物事を難しくしすぎています。

于 2016-08-13T03:24:17.087 に答える