2013-05-14 3 views
1

Что идет не так в этом SQL заявление, я не могу найти ничего плохогообновление с помощью INNER JOIN

UPDATE Master_Adjust 
    INNER JOIN [dbo].[Master] ON Master_Adjust.Empno = [dbo].[Master].Empno 
         SET Master_Adjust.GratuityYtodate = [dbo].[Master].GratuityYtodate, 
          Master_Adjust.ManualBasicPay = 0, 
          Master_Adjust.ManualTax = 0, 
          Master_Adjust.ManualNapsa = 0, 
          Master_Adjust.ManualPension = 0, 
          ManualCharity = 0 

Сообщение об ошибке является

Msg 156, Level 15, State 1, Line 2

Incorrect syntax near the keyword 'INNER'.

+0

возможно дубликат [обновление SQL из одной таблицы в другую, на основе соответствия ID] (http://stackoverflow.com/questions/224732/sql-update-from-one-table-to-another- in-a-id-match) –

+0

Возможный дубликат [Обновить таблицу с использованием JOIN на SQL Server?] (http://stackoverflow.com/questions/1604091/update-a-table-using-join-in- sql-server) –

ответ

6

Выглядит неправильно. Попробуйте следующее:

UPDATE ma 
SET ma.GratuityYtodate = [dbo].[Master].GratuityYtodate, 
    ma.ManualBasicPay = 0, 
    ma.ManualTax = 0, 
    ma.ManualNapsa = 0, 
    ma.ManualPension = 0, 
    ManualCharity = 0 
FROM Master_Adjust as ma 
INNER JOIN [dbo].[Master] ON ma.Empno = [dbo].[Master].Empno 
+0

'error msg is Msg 4104, Level 16, State 1, Line 1 Идентификатор из нескольких частей« Master_Adjust.GratuityYtodate »не может быть связан.' – Abhishek

+1

Взгляните на мое обновление. –

1

Это не синтаксис t-sql. Попытка:

UPDATE ma 

         SET ma.GratuityYtodate = M.GratuityYtodate, 
          ma.ManualBasicPay = 0, 
          ma.ManualTax = 0, 
          ma.ManualNapsa = 0, 
          ma.ManualPension = 0, 
          ma.ManualCharity = 0 
from Master_Adjust ma 
INNER JOIN [dbo].[Master] m ON ma.Empno = M.Empno 
+0

Hi @HLGEM error msg is 'Msg 4104, Level 16, State 1, Line 1 Невозможно связать идентификатор с несколькими частями« Master_Adjust.GratuityYtodate ». – Abhishek

+0

Вы также можете просто удалить псевдонимы из set, предполагается, что они из таблицы, которую вы обновляете. – HLGEM

0

Попробуйте следующий запрос.

UPDATE [dbo].Master_Adjust 
SET 
    Master_Adjust.GratuityYtodate = [dbo].[Master].GratuityYtodate 
    ,Master_Adjust.ManualBasicPay = 0 
    ,Master_Adjust.ManualTax = 0 
    ,Master_Adjust.ManualNapsa = 0 
    ,Master_Adjust.ManualPension = 0 
    ,ManualCharity = 0 
from 
    [dbo].[Master] 
INNER JOIN 
    [dbo].Master_Adjust 
ON 
    [dbo].Master_Adjust.Empno = [dbo].[Master].Empno 
Смежные вопросы