Mysql SQL:更新多行

Mysql SQL:更新多行,mysql,select,syntax,Mysql,Select,Syntax,我想用一个查询更新多行。我正在使用MySQL 正确的查询是什么 下面是一个示例,我需要用一个查询更新多个姓氏 开始: name last_name ______ ________ James abcasd Becky hadsfd Richard adfdfadgg 完成: name last_name ______ ________ James Jamerson Becky Beckerdude Richard O'Ne

我想用一个查询更新多行。我正在使用MySQL

正确的查询是什么

下面是一个示例,我需要用一个查询更新多个姓氏

开始:

name      last_name
______    ________
James     abcasd
Becky     hadsfd
Richard   adfdfadgg
完成:

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

如果是有限的案例,可以使用
案例陈述。

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
这将在Name然后LastName时生成所有

然后将其添加到
更新中

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


另一种更新
的最佳方法是,如果您在另一个表中获得了关系:

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

如果是有限的案例,可以使用
案例陈述。

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
这将在Name然后LastName时生成所有

然后将其添加到
更新中

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


另一种更新
的最佳方法是,如果您在另一个表中获得了关系:

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

不幸的是,将有大约2000行,我可以制作一个脚本来生成SQL,但首先要寻找替代方案:)好吧,但mySQL不是魔术。您必须为每个名称指定新名称。您是否在另一个表中获得了关系名NewLastName?你可以创建一个litle select来创建Updatedit2,这对我来说是最好、最优雅的,但是我对SQL脚本有一种奇怪的偏见。无论如何,谢谢你的回答。知道这是可能的是很有用的!如果你在另一个表中得到了关系,edit2是你能做的最好的。不幸的是,将有大约2000行,我可以制作一个脚本来生成SQL,但首先要寻找替代方法:)好吧,但是mySQL不是魔术。您必须为每个名称指定新名称。您是否在另一个表中获得了关系名NewLastName?你可以创建一个litle select来创建Updatedit2,这对我来说是最好、最优雅的,但是我对SQL脚本有一种奇怪的偏见。无论如何,谢谢你的回答。知道这是可能的是很有用的!如果您在另一个表中得到了关系,edit2是您所能做的最好的。您将从哪里获得新值?另一张表?你要从哪里得到新的值?另一张桌子?