2015-06-20 37 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

是的。完全刪除行 –