Sql 从行Id=2更新行Id=1

Sql 从行Id=2更新行Id=1,sql,sql-server,Sql,Sql Server,我有一个产品表,包括id和名称。就说我有, Id Name 1 A 2 B 3 C 我想用Id=1的行的值更新Id=2的行。这就是我要找的 Id Name 1 A 2 A 3 C 我正在尝试不同的语法,但没有任何效果 更新:上面的示例使用一列,但我有许多列要更新。您可以这样做: UPDATE P1 SET P1.Name = P2.Name, P1.X = P2.X, ...... FROM Products P1 CROSS JOIN Products P2 WHERE P1.

我有一个产品表,包括id和名称。就说我有,

Id Name
1  A
2  B
3  C
我想用Id=1的行的值更新Id=2的行。这就是我要找的

Id Name
1  A
2  A
3  C
我正在尝试不同的语法,但没有任何效果


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

您可以这样做:

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;

你可以这样做:

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;

你可以这样做:

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;

你可以这样做:

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;

你需要更新每一列

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列

您需要更新每一列

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列

您需要更新每一列

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列

您需要更新每一列

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列

您只想对ID=2或其他行执行此操作?我只需要从中更新x行y@user960567y=x+1是始终存在还是可以更改?您只想对Id=2或其他行执行此操作?我只需要从中更新x行y@user960567y=x+1是否始终或可以更改您只想对Id=2或其他行执行此操作还有?我只需要从y@user960567y=x+1是始终存在还是可以更改?您只想对Id=2或其他行执行此操作?我只需要从中更新x行y@user960567y=x+1是始终存在还是可以存在change@user960567-那么,你为什么不告诉我们所有的细节?为什么要保密?需要更新的列数不相关,只需用逗号分隔:
t1.name=,t1.地址=,t1.company=…
@user960567-那么,你为什么不告诉我们所有的细节呢?为什么要保密?需要更新的列数不相关,只需用逗号分隔:
t1.name=,t1.地址=,t1.company=…
@user960567-那么,你为什么不告诉我们所有的细节呢?为什么要保密?需要更新的列数不相关,只需用逗号分隔:
t1.name=,t1.地址=,t1.company=…
@user960567-那么,你为什么不告诉我们所有的细节呢?为什么要保密?需要更新的列数不相关,只需用逗号分隔:
t1.name=,t1.地址=,t1.company=…
检查下面的答案。两个查询执行相同的任务检查下面的答案。两个查询执行相同的任务检查下面的答案。两个查询执行相同的任务检查下面的答案。两个查询执行相同的任务