使用SQL别名(AS)有什么问题



运行以下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行使用别名。您是SETt1中使用字段,但UPDATEpeople中使用不一致的字段。

尝试:

UPDATE t1
SET T1.titleId = T2.ID 
FROM people as T1
INNER JOIN titles as T2
ON T1.title = T2.Title 
编辑:将人员更改为T1T1后面有一个逗号,这就是问题的根源。

将语句更改为:

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 左侧的字段

相关内容

最新更新