2014-03-27 79 views
1

具有計數條款我想創建從使用一個HAVING COUNT創建使用上的sqlplus

這是選擇查詢的select語句更新查詢的更新語句:

select hlse_ref, HLSE_TERM_START_DATE, HLSE_STATUS_CODE 
from headleas a, lernhist b 
where a.hlse_ref=b.lerh_leas_hlse_ref 
and a.HLSE_TERM_START_DATE is not null 
group by a.hlse_ref, a.HLSE_STATUS_CODE, a.HLSE_TERM_START_DATE 
having count(b.LERH_START_DATE)=1 

而且我想在條件滿足的是對我的select語句

update headleas 
set hlse_term_start_date=null 
where(*my select statement*) 

但這似乎並沒有工作設置hlse_term_start_date爲null。我看過其他帖子,但對這種情況沒有太大的幫助。我正在使用SQL Plus。任何想法傢伙?

+0

您是否記住,您需要通過列鏈接這兩個查詢,例如: ... WHERE ID IN(*選擇帶有一列的語句*)...? –

回答

1

我沒有你正在試圖建立,但可能這可以幫助

使用的邏輯存在類似

update headless outer 
set hlse_term_start_date=null 
where exists (select 1 from headleas a, lernhist b 
where a.hlse_ref=b.lerh_leas_hlse_ref 
and a.HLSE_TERM_START_DATE is not null 
and outer.hlse_ref = a.hlse_ref 
group by a.hlse_ref, a.HLSE_STATUS_CODE, a.HLSE_TERM_START_DATE 
having count(b.LERH_START_DATE)=1 
) 

條款在比較子查詢計數條款喜歡

update headless outer 
set hlse_term_start_date=null 
where 1= (
select count(b.LERH_START_DATE) 
from headleas a, lernhist b 
where a.hlse_ref=b.lerh_leas_hlse_ref 
and a.HLSE_TERM_START_DATE is not null 
and a.hlse_ref = outer.hlse_ref 
group by a.hlse_ref, a.HLSE_STATUS_CODE, a.HLSE_TERM_START_DATE 
) 
+0

謝謝,你的第一個更新查詢對我來說很有魅力!我所需要的就是where exists條款。 – Samira

0

你是什麼地方的條件應該是,到底是什麼?你給的例子不是正確的語法。

update table_b b 
set b.col1 = null 
where (select col2 from table_a a) --incorrect 

這不是一個where條件;它不評估爲真或假。你的意思是使用「哪裏存在」?或者其他一些條件?如果您使用「where exists」,則必須使用某個鍵值(可能是HEADLEAS的主鍵)將您的select語句與更新的表關聯起來。

+0

是的,抱歉。我現在看到,我必須使用where clasue,這就是爲什麼我的更新查詢不起作用。我已經加入了我的PKs,hlse_ref和lerh_leas_hlse_ref。 – Samira