2016-07-19 127 views
0

不知道为什么它在t2抛出一个错误。我试图运行一个简单的SQL查询。 运行于MS-SQL和错误消息说,“近T2不正确的语法”左加入子查询

UPDATE t1 

SET t1.EmpSubCompetency = t2.EmpSubCompetency, 
    t1.Competency = t2.Competency, 
t1.FileName = t2.FileName, 
t1.Longitude = t2.Longitude, 
t1.Latitude = t2.Latitude, 
t1.SubAreaName = t2.Region, 
t1.SectorTag=t2.SectorTagClassification 

FROM dbo.STG_MyCompetencies t1 

LEFT JOIN (select * from dbo.STG_EmployeeMaster where Act_Flg='Y') t2 
+0

如果它引发错误,为什么不在错误信息中包含问题? – HoneyBadger

+5

'ON'子句缺失 –

+0

另外,您正在使用哪些DBMS? MySQL的? SQL Server?甲骨文? –

回答

1

你的问题是缺少ON条款。此外,你并不需要一个子查询这样的逻辑:

FROM dbo.STG_MyCompetencies t1 LEFT JOIN 
    dbo.STG_EmployeeMaster t2 
    ON t1.??? = t2.??? AND 
     em.Act_Flg = 'Y' 

需要注意的是不匹配的行会都设置为NULL的所有列。

???适用于任何用于JOIN的色谱柱。

+0

这工作正常。谢谢。只要检查一下,只要我们可以避免子查询总是更好一些? –

+0

@curious_learner。 。 。你不应该使查询比必要的更复杂。子查询是不必要的。 –