运行以下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 - 逗号不是声明的一部分,我仍然收到错误。
答案 0 :(得分:5)
您的UPDATE中存在一些语法问题。它应该是:
UPDATE T1
SET titleId = T2.ID
FROM people as T1
INNER JOIN titles as T2
ON T1.title = T2.Title
答案 1 :(得分:4)
您有两个问题。
1 - 逗号。我猜你在某些时候使用了弃用的隐式JOIN
语法。
2 - 当您拥有UPDATE
时,您还应该使用JOIN
行上的别名。您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
不一致。
尝试:
{{1}}
答案 2 :(得分:3)
编辑:将人员更改为T1 在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
答案 3 :(得分:2)
我认为as T1,
之后的逗号是多余的。请尝试删除它。
答案 4 :(得分:2)
试试这个:
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。你的内连接中还有一个额外的逗号。
答案 5 :(得分:0)
UPDATE t1
SET titleId = T2.ID
FROM people as T1
INNER JOIN people as T2
ON T1.titleId = T2.titleId
您没有为SET
左侧的字段添加别名