我有一个看起来像这样的表我想要更新:
[Id] IDENTITY INT NOT NULL
[Name] NVARCHAR(200) NOT NULL
[Date] DATETIME NULL
另外5个表格如下:
[Id] IDENTITY INT NOT NULL
[TableAId] INT NOT NULL
[Date] DATETIME NOT NULL
CONSTRAINT [FK_TableB_TableA] FOREIGN KEY [TableAId] REFERENCES [TableA]([Id])
表A上的 [Date]
是一个新列,在设置值后应该是不可为空的。设置的值必须是任何表B-F中的最高[Date]
。最有效的方法是什么?
答案 0 :(得分:0)
这看起来应该可以解决问题。
UPDATE [t]
SET [Date] = (
SELECT MAX([Dates].[Date])
FROM (
SELECT MAX([Date]) AS [Date] FROM [TableB] WHERE [TableAId] = [t].[Id]
UNION ALL
SELECT MAX([Date]) AS [Date] FROM [TableC] WHERE [TableAId] = [t].[Id]
UNION ALL
SELECT MAX([Date]) AS [Date] FROM [TableD] WHERE [TableAId] = [t].[Id]
UNION ALL
SELECT MAX([Date]) AS [Date] FROM [TableE] WHERE [TableAId] = [t].[Id]
UNION ALL
SELECT MAX([Date]) AS [Date] FROM [TableF] WHERE [TableAId] = [t].[Id]
) AS [Dates]
)
FROM [TableA] AS [t]