运行以下SQL语句时收到一条错误消息。这是一个非常基本的陈述,我必须忽略一些非常简单的东西。
如果我删除别名,该语句执行得很好。再加上别名,我就会得到错误。
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-逗号不是语句的一部分,我仍然收到错误。
UPDATE中存在一些语法问题。应该是:
UPDATE T1
SET titleId = T2.ID
FROM people as T1
INNER JOIN titles as T2
ON T1.title = T2.Title
您有两个问题
1-逗号。我猜您在某个时候使用了不推荐使用的隐式JOIN
语法。
2-当您有JOIN
时,还应该在UPDATE
行使用别名。您是SET
在t1
中使用字段,但UPDATE
在people
中使用不一致的字段。
尝试:
UPDATE t1
SET T1.titleId = T2.ID
FROM people as T1
INNER JOIN titles as T2
ON T1.title = T2.Title
将语句更改为:
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
试试这个:
UPDATE t1
SET T1.titleId = T2.ID
FROM people as T1
INNER JOIN people as T2
ON T1.titleId = T2.titleId
它找不到T1.titleId,因为您正在更新"Person",sql只能看到别名为T1和T2的Person表。因此,在您的情况下,您需要更新T1。此外,您的内部联接中还有一个额外的逗号。
我认为as T1,
后面的逗号是多余的。请尝试删除它。
UPDATE t1
SET titleId = T2.ID
FROM people as T1
INNER JOIN people as T2
ON T1.titleId = T2.titleId
您不别名SET 左侧的字段