2014-08-29 29 views
0

我有一個網站已經在幾天前遭到攻擊,那個壞人拿走了幾個用戶的電子郵件並對其進行了更改。我需要儘可能地恢復。如何在SQL Server中用條件更新多行

所以我有兩個備份:從三月份襲擊一個和一個。

我收到一大堆這些電子郵件的這樣

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

什麼是不工作的意思?它會拋出一個錯誤,或者它沒有做到你想要的? – wdosanjos 2014-08-29 22:58:36

+0

它將「關鍵字附近的錯誤語法」錯誤報告爲「」 – 2014-08-29 23:11:52

回答

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'