如何在同一个表和列中将另一组数据添加到另一个数据?

时间:2017-11-05 14:30:06

标签: sql

Desired Result

我想将所有产品从Location2添加到Location1并删除所有Location2记录(可选)。 如何在不创建另一个表的情况下执行此操作?

当前SQL语句:

Update Table1
    set Quantity = (Convert(INT,Quantity) +
                    Convert(INT, (Select Quantity from Table1 where Location = 'Loc2')) )
    where Location = 'Loc1';

但只有当有1个产品时才有效。如何修改代码以允许更新我的所有产品? 谢谢。

P.S。下面是所需前后结果的截图,如果我的附加截图无法显示。

http://prntscr.com/h6i8g4

2 个答案:

答案 0 :(得分:0)

这个答案适用于MYSQL。仔细观察,OP没有使用MySQL。

您可以在join

中使用update
Update Table1 t1 join
       Table1 tt1
       on tt1.productId = t1.productId
    set t1.Quantity = (t1.Quantity + tt1.Quantity)
    where t1.Location = 'Loc1' and tt1.Location = 'Loc2';

我不知道为什么要将quantity转换为整数。它应该已经存储为数字。

检查结果后,您可以delete" Loc2"行:

delete t from table1 t
     where t.Location = 'Loc2';

我不认为你可以在MySQL中的一个语句中执行update / delete

答案 1 :(得分:0)

在SQL中,戈登的答案是:

UPDATE t1
SET    t1.Quantity = (t1.Quantity + t2.Quantity)
FROM   Table1 t1
JOIN   Table1 t2
ON     t1.ProductId = t2.ProductId
WHERE  t1.Location = 'Loc1' and t2.Location = 'Loc2'