2011-08-05 3 views
0

次のSQL文を実行しているときにエラーメッセージが表示されます。それはかなり基本的なステートメントであり、私は本当に単純なものを見落とさなければなりません。SQLエイリアス(AS)のこの使用で何が問題になっていますか?

エイリアスを削除すると、ステートメントは正常に実行されます。別名を追加してください。エラーが表示されます。

SSMSでのメッセージ:

Msg 4104, Level 16, State 1, Line 2 
The multi-part identifier "T1.titleId" could not be bound. 

SQL文:

UPDATE People 
SET T1.titleId = T2.ID 
FROM people as T1 
INNER JOIN titles as T2 
ON T1.title = T2.Title 

アップデート1 - コンマは文の一部ではないと私はまだエラーを取得しています。

+0

downvoteの左側にあるフィールドのエイリアスを作成していませんか?真剣に? – DenaliHardtail

答えて

2

はこれを試してみてください:

UPDATE t1 
SET T1.titleId = T2.ID 
FROM people as T1 
INNER JOIN people as T2 
ON T1.titleId = T2.titleId 

あなたは「人」を更新しているので、それはT1.titleIdを見つけることができないとSQLだけあなたがT1とT2とエイリアスのPersonテーブルを見ることができます。あなたのケースではT1を更新したいと思うでしょう。また、内部結合に余分なカンマがありました。

+0

私は質問を改訂しました。カンマは、私が試した何かの残り物でした。削除されましたが、まだエラーが発生していました。あなたの提案は問題を解決しました。できるだけ早く受け入れます(<5分)。ありがとう! – DenaliHardtail

+0

@special - ニックピアはしませんが、Brianと私は両方ともKeithの前にこの問題を特定しました。 – JNK

3

編集:T1に変更された人 問題を作成しているT1の後にコンマがあります。

変更への声明:私はas T1,後のコンマは不要だと思う

UPDATE T1 -- People 
    SET T1.titleId = T2.ID 
FROM people as T1 --Removed the comma that was here 
INNER JOIN titles as T2 
    ON T1.title = T2.Title 
2

。削除してください。

4

2つの問題があります。

1 - コンマ。私はある時点で廃止された暗黙のJOIN構文を使用したと思います。

2 - JOINがある場合は、UPDATE行のエイリアスも使用する必要があります。 SETフィールドはt1ですが、UPDATE ing peopleには一貫性がありません。

試してください:あなたは、あなたのUPDATEでのいくつかの構文上の問題を持っている

UPDATE t1 
SET T1.titleId = T2.ID 
FROM people as T1 
INNER JOIN titles as T2 
ON T1.title = T2.Title 
+1

詳細を明確にするために、UPDATEのフィールドリストは、指定されたテーブルのフィールドでなければなりません。あなたのオリジナルでは、 '人 'を更新しようとしていますが、' T1'のフィールドを変更しようとしています。 – Mike

+0

@mike - ありがとう、私はこれを反映するように更新しました。 – JNK

5

。それは次のようになります。

UPDATE T1 
SET titleId = T2.ID 
FROM people as T1 
INNER JOIN titles as T2 
ON T1.title = T2.Title 
+0

+1 - 適切なソリューションを最初に投稿して以来、受け入れられているはずです。 – JNK

0
UPDATE t1 
SET titleId = T2.ID 
FROM people as T1 
INNER JOIN people as T2 
ON T1.titleId = T2.titleId 

あなたはSET

関連する問題