相关的表和字段:
r_binrel:mat_type_id(货品ID),bin_id(仓位ID),last_updt(时间)
r_binmas:id,bin_no(仓位号)关系:
r_binrel.bin_id=r_binmas.id在r_binrel中,一个mat_type_id可能有多个bin_id
现在我需要每个mat_type_id只拿出一个任意的bin_no,我的做法是取last_updt最大的那个
语句如下:
select r_binrel.mat_type_id,r_binmas.bin_no
from r_binrel,r_binmas
where r_binrel.bin_id=r_binmas.id and
r_binrel.last_updt=(select max(last_updt)
from r_binrel rel
where rel.mat_type_id=r_binrel.mat_type_id)又或:
select t_a.mat_type_id,t_a.bin_no
from
(select r_binrel.mat_type_id,r_binmas.bin_no,r_binrel.last_updt
from r_binrel,r_binmas
where r_binrel.bin_id=r_binmas.id ) t_a,
(select mat_type_id,max(last_updt) last_updt
from r_binrel
group by mat_type_id) t_b where t_a.mat_type_id=t_b.mat_type_id and t_a.last_updt=t_b.last_updt ;但是效率极低,几分钟都没反应,这两个表的数据不算多,只有2万条左右
单独执行
select r_binrel.mat_type_id,r_binmas.bin_no,r_binrel.last_updt
from r_binrel,r_binmas
where r_binrel.bin_id=r_binmas.id
和
select mat_type_id,max(last_updt) last_updt
from r_binrel
group by mat_type_id
的速度都很快,几秒钟就出来了
为何合在一起就效率这么低呢?
请高手指点一下
如果是我的方法有误,请问还有什么办法能达到我想要的目的
谢谢!!
r_binrel:mat_type_id(货品ID),bin_id(仓位ID),last_updt(时间)
r_binmas:id,bin_no(仓位号)关系:
r_binrel.bin_id=r_binmas.id在r_binrel中,一个mat_type_id可能有多个bin_id
现在我需要每个mat_type_id只拿出一个任意的bin_no,我的做法是取last_updt最大的那个
语句如下:
select r_binrel.mat_type_id,r_binmas.bin_no
from r_binrel,r_binmas
where r_binrel.bin_id=r_binmas.id and
r_binrel.last_updt=(select max(last_updt)
from r_binrel rel
where rel.mat_type_id=r_binrel.mat_type_id)又或:
select t_a.mat_type_id,t_a.bin_no
from
(select r_binrel.mat_type_id,r_binmas.bin_no,r_binrel.last_updt
from r_binrel,r_binmas
where r_binrel.bin_id=r_binmas.id ) t_a,
(select mat_type_id,max(last_updt) last_updt
from r_binrel
group by mat_type_id) t_b where t_a.mat_type_id=t_b.mat_type_id and t_a.last_updt=t_b.last_updt ;但是效率极低,几分钟都没反应,这两个表的数据不算多,只有2万条左右
单独执行
select r_binrel.mat_type_id,r_binmas.bin_no,r_binrel.last_updt
from r_binrel,r_binmas
where r_binrel.bin_id=r_binmas.id
和
select mat_type_id,max(last_updt) last_updt
from r_binrel
group by mat_type_id
的速度都很快,几秒钟就出来了
为何合在一起就效率这么低呢?
请高手指点一下
如果是我的方法有误,请问还有什么办法能达到我想要的目的
谢谢!!
解决方案 »
- 如何成为一名oracle高手呢?
- Oracle问答题,答对有分,不对有鼓励分
- 请教此表的情况是否被锁定。
- 怎么实现性别选择框
- 我想在过程中实现延时1分钟该怎么做?
- 敬请高手指教
- 怎样让一个字段在每次生成记录时自动填写SYSDATE
- 求助,想用Oracle SQL developer进行SQL2000至oracle9i的数据迁移,但是oracle SQl developer 连接SQLSERVER总是不成功,请问有什么可以解决的办法
- ++为何我的表无法输入汉字?++
- expdp 字符集从ZHS16GBK到AL32UTF8 转换问题
- 一个between,and问题
- 不安装Oracle9i客户端软件,如何将c#.net软件如何连接上数据库
SELECT
TB1.mat_type_id
,TB1.bin_id
,(SELECT bin_no FROM r_binmas WHERE r_binmas.ID = TB1.bin_id ) AS bin_no
FROM (
select mat_type_id,max(bin_id) bin_id
from r_binrel
group by mat_type_id
) TB1