MySql根据其他字段值更新字段值

MySql根据其他字段值更新字段值,mysql,sql-update,Mysql,Sql Update,我正在尝试创建一个查询,该查询将执行以下操作: 这是我的桌子: ID total paid own status ------------------------------------------------ 1 100.00 100.00 100.00 0 以下是查询: $total = 50; UPDATE cart table SET paid = $total, status = CASE WHEN $total >

我正在尝试创建一个查询,该查询将执行以下操作:

这是我的桌子:

ID     total     paid     own       status
------------------------------------------------
1      100.00    100.00   100.00    0
以下是查询:

$total = 50;
UPDATE cart table SET paid = $total, status = CASE WHEN $total >= own THEN 1 ELSE 2 END;
其思想是,如果字段“总计”的总量等于或大于字段“自身”中的总量,则更新字段“状态”为1,否则为2

我不确定我是否可以只使用一个查询来完成此操作,或者我需要更新购物车表、提取结果、执行计算,然后再次更新。

请尝试以下操作:

UPDATE cart table SET paid = $total, status = If($total >= own, 1, 2)
Where ID = 1;

它被称为条件更新查询

您的查询将执行您提到的操作。除了您定义的
关键字之外,它不应该在那里,否则您的查询就可以了:

UPDATE cart
    SET paid = $total,
        status = CASE WHEN $total >= own THEN 1 ELSE 2 END
WHERE
    --your condition

有点黑客行为和SQL版本相关,但是:

UPDATE cart SET paid=$total, status=-($total>=own)+2;

这不管用吗?似乎很好,我不确定这是否有任何区别,可能不需要
选择
,只要
如果
就行了。我认为在程序中使用了案例。您知道OP正在使用
$total
更新表吗?而不是字段
总计
?否则,错误似乎是由于使用了
关键字是的,谢谢突出显示,但它不会影响查询。