sql语句小技巧,联合主键

最近写sql语句时,碰到联合主键的问题。用“||”操作符解决了,算是一个小技巧吧。
正确的sql语句:
 update ecrejnl e set e.crejnlstate= '13' where (e.crejnlno || 'x.x'|| e.subjnlno) in
 (select (ec.crejnlno || 'x.x'|| ec.subjnlno) from ereqfile er , ecrejnlreqdetails ec where er.reqno = ec.reqno and er.reqno = '10108')   


其中 crejnl ,subjnlno 是 ecrejnl 表的联合主键,也就是说他们两个都是主键。

在写更新语句时,本打算这样写,但发现是错的。
错误的sql语句:
 update ecrejnl e set e.crejnlstate= '13' where 
e.crejnlno in (select ec.crejnlno from ereqfile er , ecrejnlreqdetails ec where er.reqno = ec.reqno and er.reqno = '10108')
and
e.subjnlno in (select ec.subjnlno from ereqfile er , ecrejnlreqdetails ec where er.reqno = ec.reqno and er.reqno = '10108')   





猜你喜欢

转载自liyahui2011.iteye.com/blog/1594925