我想从使用HAVING COUNT
的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
我想将hlse_term_start_date设置为null,条件符合我的select语句
update headleas
set hlse_term_start_date=null
where( *my select statement*)
但这似乎不起作用。我看过其他帖子,但对这个案子没什么帮助。我正在使用SQL Plus。任何想法的家伙?
答案 0 :(得分:1)
我没有尝试构建的逻辑,但可能会有所帮助
使用像
这样的exists子句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
)
或
比较where子句中的子查询计数,如
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
)
答案 1 :(得分:0)
究竟是什么条件应该是什么?您提供的示例不是正确的语法。
update table_b b
set b.col1 = null
where (select col2 from table_a a) --incorrect
这不是一个条件;它没有评估为真或假。你的意思是使用“存在的地方”吗?还是其他一些条件?如果使用“where exists”,则必须使用某个键值将select语句与更新的表相关联,这可能是HEADLEAS的主键。