在组合列上使用SELECT更新表

时间:2016-03-02 15:26:11

标签: sql tsql sql-server-2012

我需要使用id来更新我的表中的列,该id是同一个表中另外两列的几个字符的组合。目前我编写它失败了,因为它不允许在子查询中返回多个值。我怎样才能让它发挥作用?

这就是我所拥有的。

UPDATE Users
SET AccountId = (
                  SELECT RIGHT(lastName, 5) + RIGHT(UserId, 6)
                  FROM Users
                )

我正试图结束这样的事情:

AccountID

lliams994521

ohnson103297

...

2 个答案:

答案 0 :(得分:4)

如果SELECT基于相同记录的字段,则您不需要UPDATE

UPDATE Users
SET AccountId = RIGHT(lastName, 5) + RIGHT(UserId, 6)

答案 1 :(得分:0)

你可以这样做:

UPDATE Users
SET AccoundId = (SELECT RIGHT(lastName, 5) + RIGHT(UserId, 6) FROM users AS SubUsers WHERE SubUsers.UserId = MainUsers.UserId)
FROM Users MainUsers

在你的情况下,这没有任何意义。正如@GiorgosBetsos所提到的

  

如果SELECT基于的字段,则无需执行UPDATE   相同记录