如何通过使用该值查找另一个表来更新SQL中的值?

时间:2014-08-18 14:49:24

标签: sql-server-2012

我有一个表名为SuperKittens的列名' KittenId'

此值是一个数字,例如12345。

我还有一个名为Kittens的表,有两列,KittenId和KittenNewId

我想更新SuperKittens并将所有KittenId更改为KittenNewId,使用表Kittens查找值。

我认为这样的事情可能有用,但显然它无效:

UPDATE SuperKittens SK 
SET SK.KittenId = 
(SELECT KittenNewId FROM Kittens K WHERE K.KittenId = SK.KittenId)

有什么想法吗?

编辑:我得到的错误是它的SQL无效:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'SK'.

3 个答案:

答案 0 :(得分:1)

您可以尝试这样:

UPDATE SuperKittens SK 
SET SK.KittenId = K.KittenNewID
FROM Kittens K INNER JOIN  ON SK.KittenId = K.KittenId

或者您可以尝试使用这样的合并选项:

MERGE INTO SuperKittens SK 
   USING Kittens K
      ON SK.KittenId = K.KittenId 
WHEN MATCHED THEN
   UPDATE 
      SET SK.KittenId = K.KittenNewID;

答案 1 :(得分:0)

另一种选择;

UPDATE SuperKittens SK
SET SK.KittenId = K.KittenNewID
FROM Kittens K
WHERE
K.KittenId = SK.KittenId

答案 2 :(得分:0)

以这种方式尝试查询:

UPDATE SuperKittens SK, Kittens K
SET SK.KittenId = K.KittenNewId
WHERE K.KittenId = SK.KittenId

我已经在Access中对它进行了测试,但它确实有效; - )