仅当两个字段一次为空时,Mysql更新字段

时间:2016-11-24 00:58:00

标签: php mysql sql if-statement null

我重写了完整的问题,因为我第一次不够清楚。

我正在尝试更新users表中的给定行id并仅填充null值,如下所示:

UPDATE USERS SET
address='Main Street' IF current address IS NULL
gender='M' AND full_name='JOHN SMITH' IF both gender and full_name ARE NULL
job='Mechanic' IF current job is NULL
WHERE id=123

我不知道如何更新性别和full_name,我希望其他字段仍可以单独触发和更新,而不管genderfull_name

2 个答案:

答案 0 :(得分:3)

这可能是您问题的逐字答案:

UPDATE yourTable
SET gender = $gender,
    full_name = $full_name
WHERE gender IS NULL AND full_name IS NULL

但是,如果 性别或全名为NULL,则更新记录似乎更有意义。在这种情况下,您可以尝试:

UPDATE yourTable
SET gender    = COALESCE(gender, $gender),
    full_name = COALESCE(full_name, $full_name)
WHERE gender IS NULL OR full_name IS NULL

答案 1 :(得分:0)

if中的update语句中的SQL会进入查询的WHERE部分:

UPDATE table_name SET gender = $gender WHERE gender IS NULL AND full_name IS NULL
  

我还要添加AND id = $id_you_want_to_update