更新行ID = 1 FROM行ID = 2

时间:2014-10-13 05:39:39

标签: sql sql-server

我有一个Product表包含id和name。我想说,我有,

Id Name
1  A
2  B
3  C

我想更新Id = 2的行,其中行的值为Id = 1.这就是我要查找的内容,

Id Name
1  A
2  A
3  C

我正在尝试不同的语法,但没有任何效果。

更新:上面的示例使用了一列,但我有许多列要更新。

2 个答案:

答案 0 :(得分:2)

你可以这样做:

UPDATE P1 SET P1.Name = P2.Name, P1.X = P2.X, ......
FROM Products P1 CROSS JOIN Products P2 WHERE P1.Id = 2 AND P2.Id = 1;

答案 1 :(得分:1)

您需要更新每一栏

UPDATE Product
SET
    Product.Name = anotherRow.Name
    , Product.AnotherColumn = anotherRow.AnotherColumn,
    --, Other columns
FROM
    (
    SELECT
        Name
        , AnotherColumn
        --, other columns
    FROM Product
    WHERE ID = 1
    ) anotherRow
WHERE
    Product.ID = 2

或者,如果复制数据后,您将删除ID = 1的行,然后仅更新ID列