更新或删除值 Vertica

Update or remove value Vertica

我有下一个sql结构table:

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

如果我向数据库发送新值或如果请求中不存在,则需要删除此数据。

如果我发送 (recipients, day, count) 新值更新现有数据,但如果我只发送 (recipients, day) 更新此数据并删除 count.

我尝试使用下一个代码:

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

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

从输入来看,table 中的许多值对于 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 = '');