假设我有一张表:“MyTable”,我有两列:“val”和“val_new”。
现在我想在“val_new”中插入新值,但如果值相等('val'和'val_new'),我想要插入NULL。
----------------------
| id | val | val_new |
----------------------
| 1 | 5 | NULL |
----------------------
| 2 | 6 | NULL |
----------------------
让我们以此表为例。
现在:
UPDATE myTable mt
SET mt.val_new = '5'
WHERE mt.id = '1';
我希望val_new的值保持为NULL或更新为NULL而不是'5'。
编辑: 我想更新现有值而不是插入新行。
答案 0 :(得分:2)
你的问题在某些方面似乎有点令人困惑。你的单词看起来像是一个新行的方式,但它似乎也想要更新它?希望这是你想要的:)
UPDATE testVal Set val_new = CASE WHEN val = 5 THEN NULL ELSE 5 END
testVal
是你的桌子。如果您想使用其他号码,请将5
替换为您选择的号码。我使用5
,因为您在示例中使用了它。
答案 1 :(得分:1)
您无需插入记录,而是必须更新现有记录。如果运行insert命令,将创建一条新记录。所以你的表将有
----------------
|val | val_new |
----------------
| 5 | NULL |
----------------
| 6 | NULL |
----------------
| | | <-- if val = val_new
----------------
| | 6 | <==if val<> val_new.
我猜你不需要这个输出。因此,最好的选择是更新列。
您可以使用案例陈述
update <yourtable>
set val_new =case
when val_new= val then
NULL
else val_new
end