我的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
。
请帮忙
答案 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