mysql - 更新每个相应选择的每一行

标签 mysql sql sql-server

我有一个查询返回一些旧的 MemberShipID

select cst.MembershipID from Contestant cst
inner join User usr on usr.ID = cst.ID and usr.TypeOfUser = 0
order by usr.CreatedOn

我还有另一个查询,它将返回一些新更新的 MemberShipID

select 
'CON' + '-' + convert(nvarchar(255), 
ROW_NUMBER() over(order by CreatedOn)) + '-' 
+ Right(Year(usr.CreatedOn),2)
from Contestant cst
inner join [dbo].[User] usr on usr.ID = cst.ID and usr.TypeOfUser = 0

现在,我想使用新的 MemberShipID 值更新旧的 MemberShipID 值 对于每个匹配

最佳答案

您可以在更新中使用join。这允许您在子查询或 CTE 中计算新值并在更新中分配它:

update cst
    set MembershipId = newval.newMembershipId
from Contestant cst join
     (select cst.MembershipID,
             'CON' + '-' + convert(nvarchar(255), ROW_NUMBER() over(order by CreatedOn)) + '-' + Right(Year(usr.CreatedOn),2) as newMembershipId
      from Contestant cst inner join
           [dbo].[User] usr
           on usr.ID = cst.ID and usr.TypeOfUser = 0
      ) newval
      on cst.MembershipID = newval.MembershipID;

关于mysql - 更新每个相应选择的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28717410/

相关文章:

MySQL——添加候选键

MySql 仅选择数字并从 varchar 列中对它们进行排序

java - 这是发送给 Oracle 的正确查询吗

php - 使用 PHP_SQLSRV 在 IIS8 上连接到 SQL Server 2012

sql - CASE 内的多个 ORDER BY

sql - Spark : optimise writing a DataFrame to SQL Server

php - mysql中的子选择数组

php - 使用 DateTime 设置日期时 Symfony2 格式错误

mysql - SQL查询多个表以获取信息

sql-server - Linux 上的 Cakephp2 不能与 Sql Server (mssql) 一起使用