Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更新与CASE语句匹配的字段,或者在更新SQL中的其他字段时不对该字段执行任何操作_Mysql_Sql - Fatal编程技术网

Mysql 更新与CASE语句匹配的字段,或者在更新SQL中的其他字段时不对该字段执行任何操作

Mysql 更新与CASE语句匹配的字段,或者在更新SQL中的其他字段时不对该字段执行任何操作,mysql,sql,Mysql,Sql,我需要获取此更新查询,以便仅当“报价周期”字段的值大于NOW()时,才将“报价周期”字段(日期时间)的值更改为NOW()。问题是,不管这个字段是什么,我都需要更新我的“状态”字段 由于状态字段必须更新,因此我无法更改WHERE子句以包含任何报价期条件,或者如果不满足该条件,状态字段将不会得到更新 在下面的查询中,ELSE语句给我带来了问题。如果我命令它,如果不满足案例条件,则offer_period字段值将更改为NULL,这是不好的,因为我希望它在这些实例中不做任何操作。因此,我尝试使用现有的o

我需要获取此更新查询,以便仅当“报价周期”字段的值大于NOW()时,才将“报价周期”字段(日期时间)的值更改为NOW()。问题是,不管这个字段是什么,我都需要更新我的“状态”字段

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

在下面的查询中,ELSE语句给我带来了问题。如果我命令它,如果不满足案例条件,则offer_period字段值将更改为NULL,这是不好的,因为我希望它在这些实例中不做任何操作。因此,我尝试使用现有的offer_period值更新ELSE条件,但结果显示0行受到影响。这就是我被困的地方

谢谢你抽出时间

乔希


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