下面的SQL有什么问题?在JOIN子句中可以不使用表变量吗?
错误消息为"Msg 170,Level 15,State 1,Line 8 Line 8:‘t1’附近的语法不正确。“
Declare @t TABLE (
_SportName varchar(50),
_Lang varchar(3)
)
insert @t VALUES('Basketball', 'ENG') -- ENG
UPDATE tblSport t1
SET
t1.SportName = @t._SportName
FROM
@t INNER JOIN tblSport ON (t1.Lang = @t._Lang)
谢谢。
发布于 2010-02-03 11:49:46
将最后一条语句更改为:
UPDATE t1, temp
SET t1.SportName = temp._SportName
FROM tblSport AS t1
INNER JOIN @t AS temp
ON t1.Lang = temp._Lang
(需要检查准确的语法)
发布于 2010-02-03 18:01:53
Justin的答案在语法上是正确的-您需要为临时表分配一个别名(2008年的表类型变量也是如此)。
但是,请注意,表变量和表型变量都没有任何与其相关的统计信息,因此可能导致查询优化器在执行计划方面做出非常可疑的选择(因为它总是估计表变量包含1行-因此通常选择嵌套循环作为连接操作符)。
发布于 2010-02-03 14:41:10
您的别名t1
在错误的位置
UPDATE
t1
SET
SportName = @t._SportName
FROM
@t INNER JOIN tblSport t1 ON (t1.Lang = @t._Lang)
https://stackoverflow.com/questions/2189551
复制相似问题