在一个SQL语句中更新两个不同的表

时间:2016-03-13 14:43:09

标签: sql updating

UPDATE `Order`
SET Order_Cost ='17.88' 
WHERE Order_Cost ='16.89'
UNION 
UPDATE `BagelCard`
SET BagelPoints = '50',Discount = True
WHERE BagelPoints ='45';

这是我的sql代码,用于在两个不同的表中提升值。这样对吗 ?或者我用什么sql命令来更新两个不同表中的值。

1 个答案:

答案 0 :(得分:4)

UNION用于SELECT次查询。如果要运行两个更新,可以使用两个单独的查询:

UPDATE `Order`
    SET Order_Cost = '17.88' 
    WHERE Order_Cost = '16.89';

UPDATE `BagelCard`
    SET BagelPoints = '50',
        Discount = True
    WHERE BagelPoints = '45';

如果您的值是数字,而不是我建议删除单引号。此外,十进制数字(如价格)也应存储为小数/数字而不是浮点数。

我应该注意MySQL 允许你在一个语句中更新两个表。您可以使用JOIN。在这种情况下,它并没有真正有意义,因为这些表似乎并不相互关联:

UPDATE `Order` o CROSS JOIN
       `BagelCard` bc
    SET o.Order_Cost = '17.88',
        bc.BagelPoints = '50',
        bc.Discount = True
    WHERE o.Order_Cost = '16.89' AND bc.BagelPoints = '45';