select语句中满足条件后的update语句(mysql)

时间:2014-07-13 16:57:31

标签: mysql sql

如果选择的表格为真,我的更新有问题...

如果此select语句为真

(SELECT COUNT(*) FROM Add_bonus WHERE value > 0) > 0)
THEN do
UPDATE bonus SET amount = amount + 10 WHERE 1

1 个答案:

答案 0 :(得分:2)

if语句仅允许在MySQL中的存储过程,函数和触发器中使用。您可以通过一次更新来完成此操作:

UPDATE bonus
    SET amount = amount + 10
    WHERE exists (select 1 from Add_Bonus where value > 0);

请注意,当bonus表中存在任何适当的行时,此查询将更新add_bonus表中的所有行。这似乎是您原始查询的意图。更常见的是,可能有一个员工ID链接这两个表。

另请注意exists的使用。这通常比使用count(*)更有效,因为它可以在匹配的第一行停止处理。