2012-07-29 75 views
0

我想用一個查詢更新多行。我正在使用MySQL。SQL:更新多行

什麼是正確的查詢?

這是一個例子,我需要用一個查詢更新多個姓氏。

開始:

name  last_name 
______ ________ 
James  abcasd 
Becky  hadsfd 
Richard adfdfadgg 

完成:

name  last_name 
______ ________ 
James  Jamerson 
Becky  Beckerdude 
Richard O'Nerdy 
+0

你打算獲得新值的位置?另一張桌子? – 2012-07-29 22:16:42

回答

3

如果是有限的情況下,可以使用Case Statement.

update yourTable set Last_Name = CASE When Name = 'James' then 'Jamerson' 
           WHEN Name = 'Becky' then 'Beckerdude'.. 
           --then for each case 
           END 

編輯

,如果你有關係名稱 - NewLastName另一個表中,然後創建一個腳本:

select 
'When Name = '''+CAST(Name as Varchar(50)+''' Then '''+Cast(LastName as Varchar(50)+''' 
from yourTableWithRelation 

這將生成所有When Name then LastName 然後將其添加到update

Update yourTable set Last_Name = CASE 
--Paste here the generated 
END 

EDIT2

另一個BEST方式爲update,如果您在其他位置有關係r表:

Update T set T.Last_Name = T2.LastName from YourTableToUpdate T inner join TableWithNewLastName T2 
on T1.Name = T2.Name 
+0

不幸的是會有大約2000行,我可以製作一個腳本來生成SQL,但是首先尋找替代品:) – 2012-07-29 22:15:48

+0

嗯,但是mySQL並不神奇。您必須爲每個名稱指定哪一個將是新名稱。你是否在另一個表中有關係Name-NewLastName?你可以創建一個litle選擇來創建你的更新 – 2012-07-29 22:17:10

+0

@DonnyP看我的編輯 – 2012-07-29 22:20:27