Я уверен, что это может быть дубликат, но я не могу найти нужную поисковую фразу.
Учитывая, что таблица в именованной схеме (т.е. не dbo) требует, чтобы вы включили имя схемы взаявление. Итак, ранее я просто написал бы это так:
UPDATE [Schema].[Table1]
SET [AColumn] =
(
SELECT [SomeColumn]
FROM [Schema].[Table2]
WHERE [Schema].[Table2].[SameColumnName] = [Schema].[Table1].[SameColumnName]
);
Но поскольку More than two-part column name
устарело, мне нужно найти новый способ сделать это, что является подтверждением будущего. Я предложил 2 варианта, во-первых, используя псевдоним:
UPDATE [Alias1]
SET [AColumn] =
(
SELECT [SomeColumn]
FROM [Schema].[Table2] [Alias2]
WHERE [Alias2].[SameColumnName] = [Alias1].[SameColumnName]
)
FROM [Schema].[Table1] [Alias1];
Второй способ - это то, что мне действительно трудно определить, действительно ли это VALID T-Sql
:
UPDATE [Schema].[Table1]
SET [AColumn] =
(
SELECT [SomeColumn]
FROM [Schema].[Table2]
WHERE [Table2].[SameColumnName] = [Table1].[SameColumnName]
);
Я проверил и то, и другое, и они работают, поэтому мой вопрос в том, является ли второй полностью допустимым и нормальным использовать только имя таблицы без Schema
в этом смысле, или мне лучше выбратьчуть более многословный Alias
?