使用case更新表中的mysql日期字段

时间:2015-09-30 08:44:37

标签: php mysql sql

我有这个Match表:

| mid | Home | Away | dateUpdated | dateResultsEntered |
|  1  |  30  |  5   |   30/07/15  |      30/07/15      |
|  2  |  14  |  12  |   30/07/15  |      29/07/15      |
|  3  |  41  |  21  |   30/07/15  |      28/07/15      |
|  4  |  30  |  14  |   30/07/15  |      28/07/15      |
|  5  | NULL | NULL |   30/07/15  |      NULL          |
|  6  | NULL | NULL |   30/07/15  |      NULL          |

当用户在Web应用程序中提交结果表时,每行都会更新。但是,我正在尝试编写更新查询,以便Home列具有值,请勿更改dateResultsEntered列。一些用户提交的值将为NULL(即未输入)

这是使用mid循环在PHP代码表中为每个foreach重复的sql:

UPDATE `Match`
   SET 
     Home = 20 , 
     Away = 12 ,
     dateUpdated = NOW() , 
     dateResultsEntered = CASE WHEN Home IS NOT NULL 
                                AND dateResultsEntered IS NULL 
                                THEN NOW() 
                                   ELSE
                                NULL 
                                END 
WHERE mid = 5 

dateResultsEntered中存在值的任何地方,似乎都会将所有值的NOW()列更新为Home

我希望dateResultsEntered列在Home列从NULL更改为整数时保存当前日期

有人可以帮我写这个查询吗?

1 个答案:

答案 0 :(得分:1)

怎么样

UPDATE `Match`
SET 
     Home = 20 , 
     Away = 12 ,
     dateUpdated = NOW() , 
     dateResultsEntered = NOW()
WHERE mid = 5 AND dateResultsEntered IS NULL AND Home IS NOT NULL