Mysql 更新与CASE语句匹配的字段,或者在更新SQL中的其他字段时不对该字段执行任何操作
我需要获取此更新查询,以便仅当“报价周期”字段的值大于NOW()时,才将“报价周期”字段(日期时间)的值更改为NOW()。问题是,不管这个字段是什么,我都需要更新我的“状态”字段 由于状态字段必须更新,因此我无法更改WHERE子句以包含任何报价期条件,或者如果不满足该条件,状态字段将不会得到更新 在下面的查询中,ELSE语句给我带来了问题。如果我命令它,如果不满足案例条件,则offer_period字段值将更改为NULL,这是不好的,因为我希望它在这些实例中不做任何操作。因此,我尝试使用现有的offer_period值更新ELSE条件,但结果显示0行受到影响。这就是我被困的地方 谢谢你抽出时间 乔希Mysql 更新与CASE语句匹配的字段,或者在更新SQL中的其他字段时不对该字段执行任何操作,mysql,sql,Mysql,Sql,我需要获取此更新查询,以便仅当“报价周期”字段的值大于NOW()时,才将“报价周期”字段(日期时间)的值更改为NOW()。问题是,不管这个字段是什么,我都需要更新我的“状态”字段 由于状态字段必须更新,因此我无法更改WHERE子句以包含任何报价期条件,或者如果不满足该条件,状态字段将不会得到更新 在下面的查询中,ELSE语句给我带来了问题。如果我命令它,如果不满足案例条件,则offer_period字段值将更改为NULL,这是不好的,因为我希望它在这些实例中不做任何操作。因此,我尝试使用现有的o
ELSE offer\u period只保留当前值,这就是为什么它说0行受影响。您想用已经存在的内容进行更新吗?不,我不想,但当我操作ELSE部分时,它会将offer\u period值更改为NULL,这是我不想看到的。好吧,那么问题出在哪里呢?从列表中选择COUNT(*),其中列表\u id=1和代理\u id=1和(状态为“挂起”或offer_period>NOW());return?您使用的是MySQL还是SQL Server?请更正标记。
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