2015-10-28 3 views
0
update [RegistryCopy].[dbo].[RegFile_New] 
SET r.[FileNo] = v.[Cont#Account (New ACC)] 
where r.[FileNo] IN 
    (
    SELECT r.[FileNo] 
    FROM [RegistryCopy].[dbo].[RegFile_New] as R 
    INNER JOIN 
    [Registry_Malta_Recovered].[dbo].OLD_NEW_AccountsFromSap as v ON 
    r.FileNo] = v.[Acct in legacy (Old ACC)] 
     where 
     r.[FileNo] = ('1000040000') 
    ) 

Я получаю сообщение об ошибке:не может обновить

Мульти-часть идентификатора «r.FileNo» не могут быть связаны.

+0

мы должны были бы увидеть, что определения таблицы выглядят как для обоего таблиц. – Thomas

+0

Есть ли отсутствующие '['? Должен ли он читать 'ON [r.FileNo] =' или это была опечатка при вставке кода в SO? – MiguelH

ответ

0

Ваше утверждение является недействительным. Вы ссылаетесь на псевдонимы во внешнем запросе, которые определены во внутреннем запросе (подзапросе), и вы также ссылаетесь на поля во внешнем запросе для таблиц, которые определены только во внутреннем запросе.

Это ближайшее приближение вашего запроса:

UPDATE r 
SET [FileNo] = v.[Cont#Account (New ACC)] 
FROM [RegistryCopy].[dbo].[RegFile_New] AS R 
INNER JOIN [Registry_Malta_Recovered].[dbo].OLD_NEW_AccountsFromSap AS v 
    ON r.[FileNo] = v.[Acct in legacy (Old ACC)] 
WHERE r.[FileNo] = ('1000040000') 
+0

Спасибо парню. Хотя я хочу сделать это сейчас для всех этих записей не только с файлом no 1000040000 – user1542323

+0

@ user1542323 Затем соответствующим образом измените предложение WHERE? Я понятия не имею, о чем вы спрашиваете. –

+0

Управляется работать. Большое спасибо.... – user1542323

0

Он жалуется, потому что вы говорите это, чтобы обновить эту таблицу/псевдоним под названием r, но это r не найдено в имени таблицы выше.

Вы можете переписать запрос таким:

UPDATE r 
SET r.[FileNo] = v.[Cont#Account (New ACC)] 
FROM [RegistryCopy].[dbo].[RegFile_New] as r 
INNER JOIN [Registry_Malta_Recovered].[dbo].OLD_NEW_AccountsFromSap as v 
    ON r.FileNo] = v.[Acct in legacy (Old ACC)] 
WHERE r.[FileNo] = ('1000040000') 
+0

Спасибо за помощь – user1542323

2

кажется, что «г» и идентификаторы «V» доступны для только подзапроса.

Пожалуйста, попробуйте использовать UPDATE FROM синтаксис, как это было сделано здесь: Update a table using JOIN in SQL Server?