2015-06-20 36 views
0

我有一个SQL结构表:更新或删除值Vertica的

id | account_id | app_id | setting | value 

示例数据:

1 | 8fb38bac-6896-49e8-ac92-4cf6300ccd6f | 1  | recipients | [email protected] 
    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'; 

但是这个脚本更新的表中的所有领域。 如何解决它?

+0

什么数据库提供商? –

+0

更新设置 set value ='1' where account_id ='8fb38bac-6896-49e8-ac92-4cf6300ccd6f'and app_id ='1'and setting ='count'; – HelloNewWorld

回答

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 = ''); 
+0

好的,谢谢,但如何删除一些数据,如果他在查询数据库中的值为空? –

+0

完全删除行? –

+0

是的。完全删除行 –