[MS SQL] Две одинаковые таблицы в разных схемах
От: teapot2  
Дата: 08.07.21 17:03
Оценка:
Добрый день.

Возникла передо мной такая задача:

Есть БД MS SQL, а в ней две схемы — s1, s2. В обоих схемах есть две (почти) идентичные таблицы с одним и тем же именем t. В обоих первичный ключ id int и есть еще некоторое поле данных some int. Необходимо выставить в таблице s2.t поле some равным такому же полю в таблице s1.t при одинаковых ключах. Вроде бы простая задача и мелкомягкая документация это подтверждает. Вот здесь (ссылка) читаем:

UPDATE dbo.Table2   
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB  
FROM dbo.Table2   
    INNER JOIN dbo.Table1   
    ON (dbo.Table2.ColA = dbo.Table1.ColA);  
GO


Применительно к нашему случаю это выглядит так:
UPDATE s2.t.some 
SET s2.t.some = s1.t.some
FROM s2.t INNER JOIN s1.t ON (s1.t.id = s2.t.id)
GO


Видите, код — прямо под копирку. Но не тут-то было: получаю ошибку

Сообщение 1013, уровень 16, состояние 1, строка 179
Объекты "s2.t" и "s1.t" в предложении FROM имеют одинаковые видимые имена. Используйте корреляционные имена, чтобы различать их.


Эта ошибка часто встречается у народа, но исключительно в контексте кратного джойна одной и той же таблицы, и в этом случае решается использованием алиасов в запросах. Но у меня же имена полностью квалифицированы! Совершенно не тот случай. И, предсказуемо, попытка использовать алиасы ни к чему хорошему не привела, хотя ошибку сервер выдавал уже другую. В общем, я перепробовал полтора десятка различных вариантов, но не один из них не сработал.

Кто-нибудь может привести рабочий пример?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.