更新或删除Vertica值

时间:2015-06-20 07:16:50

标签: vertica

我有下一个sql结构表:

id |  account_id  | app_id |  setting  |  value 

示例数据:

  1 | 8fb38bac-6896-49e8-ac92-4cf6300ccd6f | 1      | recipients | taras@gmail.com
  2 | 8fb38bac-6896-49e8-ac92-4cf6300ccd6f | 1      | day        | monday
  3 | 8fb38bac-6896-49e8-ac92-4cf6300ccd6f | 1      | count      | 1234

如果我发送新值,则需要更新此数据;如果请求不存在,则需要删除。

如果我发送(收件人,日,计数)新值更新现有数据,但是我只是发送(收件人,天)来更新此数据并删除的计数

我尝试使用下一个代码:

 update settings 
set setting='count', value='1' 
where account_id='8fb38bac-6896-49e8-ac92-4cf6300ccd6f' and app_id='1';

但是这个脚本会更新表中的所有字段。 如何解决?

1 个答案:

答案 0 :(得分:2)

从输入看,表中的许多值看起来都有account_idapp_id的相同值,因此当您运行脚本时,它会更新所有值。

如果您只想在设置中更新count行,请执行 -

update settings 
set value='1' 
where account_id='8fb38bac-6896-49e8-ac92-4cf6300ccd6f' and app_id='1' and setting='count' and (value is not null and value <> '');

删除行

delete from settings
account_id='8fb38bac-6896-49e8-ac92-4cf6300ccd6f' and app_id='1' and setting='count' and (value is null or value = '');