2016-07-19 3 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

Кроме того, какие СУБД вы используете? MySQL? SQL Server? Oracle? –

ответ

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. , , Вы не должны делать запрос более сложным, чем необходимо. Подзапрос не нужен. –

Смежные вопросы