当UPDATE SET时,MySQL语句总是将值设置为0

时间:2013-09-21 16:41:16

标签: php mysql sql

我的MySQL声明(我用4天时间找到一个工作的声明)应该取1个给定的值并检查3个不同的列,如果它们被填充或为NULL。如果列得到一个值,它将转到下一列。如果该列为NULL,则应将给定值写入该单元格。

不幸的是我的语句能够获取该列,但是当我尝试设置该值时,它总是设置为0.当我尝试+1现有值时,它没有问题。

说明:

UPDATE `license` SET
  `hardwareid1` = IF( `hardwareid1` = 123,`hardwareid1` = 987, `hardwareid1`) ,
  `hardwareid2` = IF( `hardwareid2` = 123, `hardwareid2` = 987, `hardwareid2` )
  WHERE `code` = 99

= 123的位置,在制作中我将使用IS NULL 987代表“$ value”的示例值

因此,如果hardwareid1真的是123,那么它会写987而不是0

请帮忙

2 个答案:

答案 0 :(得分:0)

UPDATE  license
SET     hardwareID3 = CASE WHEN hardwareID1 IS NOT NULL AND
                                hardwareID2 IS NOT NULL AND
                                hardwareID3 IS NULL
                                THEN 987 
                                ELSE hardwareID3 END,
        hardwareID2 = CASE WHEN hardwareID1 IS NOT NULL AND 
                                hardwareID2 IS NULL 
                                THEN 987 
                                ELSE hardwareID2 END,
        hardwareID1 = CASE WHEN hardwareID1 IS NULL 
                                THEN 987 
                                ELSE hardwareID1 END
WHERE   code = 99

hardwareID1 IS NULL新值987将插入列时,查询的作用是什么。同时,如果hardwareID2具有值且hardwareID1为空,则hardwareID2的值也会更改。否则,他们的所有价值都将保留。

答案 1 :(得分:0)

我真的不知道,但你的SQL看起来不应该更像这样吗?

`hardwareid1`=CASE
WHEN `hardwareid1`= NULL THEN set_to_xy