在写Oracle Sql语句的时候很容易犯错误的一件事情就是联接其它副表时的联接条件顺序。
例1:
select * from A left join B on A.key1=B.key2 and 2<B.No
where B.Key3>2
你能看出有什么问题吗?
问题在2<B.No上这句将失效,原因是常量在表达式左侧。如果把它改写为B.No>2就没什么问题。
日本软件的人很容易犯这种错误,因为日本人往往要求在程序里写比较表达式的时候都用小于符号<不让用大于符号>。
如下条件表达式也将失效
例2:
select * from A left join
(select * from C left join
(select * from E where E.field1=2) D
on C.key1=D.key1) B
on A.key1=B.key1
where B.Key3>2
E.field1=2将失效