我有一个网站在几天前遭到攻击,那个坏人带走了几个用户的电子邮件并进行了更改。我需要尽可能多地恢复。
所以我有两个备份:攻击后一个,一个来自三月。
我收到很多像这样的电子邮件
SELECT [email], [userId]
FROM [lastBackup].[dbo].[aspnet_Membership]
WHERE [email] like '%@dispostable.com'
问题是如何将我的测试基础中的每一行更新为[oldBackup]
表中的值。
我认为它应该是这样的,虽然它看起来很糟糕并且不起作用=)
UPDATE [testbase].[dbo].[aspnet_Membership] AS tb
SET [email] = (SELECT om.[email] FROM [oldBackup].[dbo].[aspnet_Membership] om
INNER JOIN [lastBackup].[dbo].[aspnet_Membership] cm
ON cm.userId = om.userId
WHERE cm.[email] LIKE '%@dispostable.com'
AND tb.userId = cm.userId)
答案 0 :(得分:2)
我认为您的update...from
语句错误,请尝试此操作(如documentation中所述):
UPDATE [testbase].[dbo].[aspnet_Membership]
SET [email] = om.[email]
FROM [testbase].[dbo].[aspnet_Membership] tb
INNER JOIN [lastBackup].[dbo].[aspnet_Membership] cm ON tb.userId = cm.userId
INNER JOIN [oldBackup].[dbo].[aspnet_Membership] om ON cm.userId = om.userId
WHERE cm.[email] LIKE '%@dispostable.com'