跨数据库left join的问题??

attilax 2014-12-15 04:57:15
需要跨数据库left join 俩个表a,b。。数据库是不同类型的数据库oracle,mssql

select * from a left join b on a.id=b.id where b.col1="xxx"

select * from a left join b on a.id=b.id where a.col1="ccc"

这俩个sql要怎么实现呢???

我的思路是比如:select * from a left join b on a.id=b.id where b.col1="xxx"
先查询 select b.id from b where b.col1="xxx"
然后在 select * from a where a.id in (b.id)

思路看起来可行,但是好像与语句顺序相反。而且如果b.id很多的话,导致 where a.id in (b.id) 会很长,in查询好像也有长度限制,不过可以使用for循环解决,比较麻烦些。。

如果先执行select * from a left join b on a.id=b.id 再根据where语句过滤 ,好像俩面会加载好多无用的记录集。。


有没有更好的思路呢??
...全文
734 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jelly_2008 2015-07-03
  • 打赏
  • 举报
回复
如果是JPA,可试下 HQL或 createquery 。他们是跨数据库的
  • 打赏
  • 举报
回复
具体你可以看看这个配置多个数据源的那个,应该差别不大 http://bbs.csdn.net/topics/390954614
  • 打赏
  • 举报
回复
这个你看起来很难,其实你配置两个个数据源,应该能同时访问两个数据库A和B 然后就是sql的编写了, 你sql在访问数据库表的时候用两个库的登录名.表名就可以了,注意一点的是设置两个数据库访问的权限

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧