ryid 相当于 jbxx.rid 的外键。
语句如下:
select xzjl.rid,xzjl.ryid from yzdb.DA_JBXX jbxx,yzdb.JC_XZJL xzjl,yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid or jbxx.rid = jc_zdlg.ryid结果都到50w条了,而且还没完。这样不行,应该怎样写了?望懂的哥们指教下。分奉上。
语句如下:
select xzjl.rid,xzjl.ryid from yzdb.DA_JBXX jbxx,yzdb.JC_XZJL xzjl,yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid or jbxx.rid = jc_zdlg.ryid结果都到50w条了,而且还没完。这样不行,应该怎样写了?望懂的哥们指教下。分奉上。
解决方案 »
- 在线等!!!!!!!着急!!!!!!
- ORACLE监听程序开不起来 telnet 10.119.119.119 1521 打开1521失败
- pl/sql中如何调用包里面的过程和函数啊???
- 请教高手解决一张oracle复杂报表
- hibernate 与 Oracle 触发器 疑惑
- 触发器锁表的问题
- 程序调用存储过程的时候package body会自动变成invalid 状态, 怎么回事呢??
- 一个关于导入导出的简单问题,谢谢
- 求两段VB示例代码:用VB备份、及恢复ORACLE数据库。想要数据库在打开状态下也能进行的热备份
- Oracle在NT环境下如何使用Pro*c进行开发?(不通过VC)
- 如何对sequence重新设置序列值
- Oracle参数类型和C#类型问题【在线等!!】
where jbxx.rid = xzjl.ryid
union
select yzdb.DA_JBXX jbxx,yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = jc_zdlg.ryid
where jbxx.rid = xzjl.ryid AND jbxx.rid = jc_zdlg.ryid把or改成AND
3个大表连接
select xzjl.rid,xzjl.ryid from yzdb.DA_JBXX jbxx,yzdb.JC_XZJL xzjl,yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid or jbxx.rid = jc_zdlg.ryid
相当于
select xzjl.rid,xzjl.ryid from yzdb.DA_JBXX jbxx,yzdb.JC_XZJL xzjl,yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid
union all
select xzjl.rid,xzjl.ryid from yzdb.DA_JBXX jbxx,yzdb.JC_XZJL xzjl,yzdb.JC_ZDLG jc_zdlg
jbxx.rid = jc_zdlg.ryid
union上边的代码等价于jbxx和 xzjl通过条件连接后的结果再跟第三个表无条件连接的笛卡尔积
下边的代码等价于jbxx和 jc_zdlg通过条件连接后的结果再跟第三个表无条件连接的笛卡尔积
两个结果集加起来就更大了
把and 改成or可以避免
楼主看看表连接方面的资料
把or 改成and
写错了
select xzjl.rid,xzjl.ryid from yzdb.DA_JBXX jbxx,yzdb.JC_XZJL xzjl,yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid
union all
select xzjl.rid,xzjl.ryid from yzdb.DA_JBXX jbxx,yzdb.JC_XZJL xzjl,yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = jc_zdlg.ryid
where jbxx.rid = xzjl.ryid or jbxx.rid = jc_zdlg.ryid 改成and
select xzjl.rid, xzjl.ryid
from yzdb.DA_JBXX jbxx, yzdb.JC_XZJL xzjl, yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid
and jbxx.rid = jc_zdlg.ryid
或者改成or用union 来连接
select xzjl.rid, xzjl.ryid
from yzdb.DA_JBXX jbxx, yzdb.JC_XZJL xzjl, yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid
union all
select xzjl.rid, xzjl.ryid
from yzdb.DA_JBXX jbxx,
yzdb.JC_XZJL xzjl,
yzdb.JC_ZDLG jc_zdlg jbxx.rid = jc_zdlg.ryid
from yzdb.DA_JBXX jbxx, yzdb.JC_XZJL xzjl, yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid
union all
select xzjl.rid, xzjl.ryid
from yzdb.DA_JBXX jbxx,
yzdb.JC_XZJL xzjl,
yzdb.JC_ZDLG jc_zdlg jbxx.rid = jc_zdlg.ryid
含重复记录
select xzjl.rid, xzjl.ryid
from yzdb.DA_JBXX jbxx, yzdb.JC_XZJL xzjl, yzdb.JC_ZDLG jc_zdlg
where jbxx.rid = xzjl.ryid
union
select xzjl.rid, xzjl.ryid
from yzdb.DA_JBXX jbxx,
yzdb.JC_XZJL xzjl,
yzdb.JC_ZDLG jc_zdlg jbxx.rid = jc_zdlg.ryid
可以去掉重复记录,这样应该好点