SQL的查询条件
本帖最后由 wnf2009 于 2013-02-14 16:16:06 编辑
A inner join B on 后的条件可不可以放到where后面?
比如说
select * from A inner join B on A.name = B.name and A.salary = B.salary left join C on A.age = C.age
等不等价于
select * from A inner join B on A.name = B.name left join C on A.age = C.age where A.salary = B.salary
另外顺便再问下,jdbc的preparestatement里,"?"能放在"on" 后面么?
------解决方案--------------------第一个问题是可以的
hr@ORCL> select * from a inner join b on a.id=b.id where a.name=b.name;
ID NAME ID NAME
---------- ---------- ---------- ----------
1 aa 1 aa
2 bb 2 bb
3 cc 3 cc
4 dd 4 dd
------解决方案--------------------第二个问题也是可以的
------解决方案--------------------不要这样写sql语句,很容易引起混乱,尤其在where条件那块。单独的做内连接,然后查询出来的结果集作为子查询再内连接,这样虽然麻烦,但不会错。
------解决方案--------------------额,内连接应该是可以的
------解决方案--------------------oracle里这是两种方式。
where 就相当于 join .....on
通常情况下只选择一种使用,这两者结合起来多数不同时使用的
------解决方案--------------------如:
select * from a left outer b on a.bid=b.id
相当于
select * from a, b where a.bid=id(+)