具有CASE语句的UPDATE字段匹配或对该字段不执行任何操作,同时仍在更新SQL中的其他字段

时间:2013-09-03 21:59:14

标签: mysql sql

只有当offer_period字段的值大于NOW()时,我才需要获取此UPDATE查询以将我的“offer_period”字段(日期时间)值更改为NOW()。问题是,无论这个领域如何,我都需要更新我的“状态”字段。

由于必须更新状态字段,因此我无法更改WHERE子句以包含任何offer_period条件,或者如果不满足该条件,则状态字段将不会获得更新。

使用以下查询,ELSE语句导致我出现问题。如果我省略它,如果不满足CASE条件,则offer_period字段值将更改为NULL,这是不好的,因为我希望它在这些实例中不执行任何操作。所以我尝试将ELSE条件包含在现有的offer_period值中进行更新,但结果表明0行受到影响。所以这就是我被困住的地方。

感谢您抽出宝贵时间。

约什

UPDATE listings
SET `status`= 'Pending'
    , offer_period = CASE
                       WHEN offer_period > NOW() THEN NOW()
                       ELSE offer_period
                     END
WHERE listing_id=1
    AND agent_id=1

0 个答案:

没有答案