谁帮我看一下这个简单的sql有什么问题啊
update
tbl1
set
clm1 = :clm1
,clm2 = :clm2
where
tbl1.k1 = tbl2.clmx
and tbl1.k2 = tbl2.clmy
and tbl2.ka = :ka
and tbl2.kb = :kb
要更新tbl1的clm1和clm2,
k1和k2是tbl1的主键,
ka和kb是tbl2的主键
这么写为什么题是错误阿?
------解决方案--------------------提示什么错误?
------解决方案--------------------tab1和tab2有什么关联吗?
------解决方案--------------------
这当然会错
应该这样
update
tbl1
set
clm1 = :clm1
,clm2 = :clm2
where
exist(select 1 from tbl2 tbl1.k1 = tbl2.clmx
and tbl1.k2 = tbl2.clmy
and tbl2.ka = :ka
and tbl2.kb = :kb)
------解决方案--------------------
改一下,用IN
update tbl1
set clm1 = :clm1 ,clm2 = :clm2
where (k1, k2)
IN (select clmx, clmy
from tbl2
where ka=:ka and kb=:kb);