select count(*)
from asset_item t
记录数13000多
select count(*)
from asset_item t
where t.ASSETID in (select t2.ASSETID from asset_data t2 )
记录数一样,13000多
select min(t1.ASSETID) ASSETID
from asset_data t1
group by t1.LOCATION,
t1.PLANT, t1.DESIG, t1.ATTRIBUTE
记录数8000多,
神奇的事情发生了
select count(*)
from asset_item t
where t.ASSETID in
(select min(t1.ASSETID) ASSETID
from asset_data t1
group by t1.LOCATION,
t1.PLANT, t1.DESIG, t1.ATTRIBUTE)
记录数9万多。
还有 Oracle 不支持select * into 操作。
很正常啊。你的条件是在分组以后取最小id集合。而count的条件是id存在于最小id集合中。那么你有没有确定你的最小id有几条记录呢,比如你8000多最小id,那么每一个最小id可能同时存在10多条,这样不就会产生9w条结果吗?
select count(*)
from asset_item t
where t.ASSETID in
(select min(t1.ASSETID) ASSETID
from asset_data t1
group by t1.LOCATION,
t1.PLANT, t1.DESIG, t1.ATTRIBUTE)
这个在sql server 中执行 应该是正常的。
而且这个在oracle中 逻辑上说不过去。我仅仅是加了个
过滤条件加了反而条数说不过去。这个解释不通啊
@lorgine: 你没好好理解我说的意思
@茂茂: 这句话sql中执行不通过应该
select min(t1.ASSETID) ASSETID
from asset_data t1
group by t1.LOCATION,
t1.PLANT, t1.DESIG, t1.ATTRIBUTE
少了个as
select min(t1.ASSETID) as ASSETID
from asset_data t1
group by t1.LOCATION,
t1.PLANT, t1.DESIG, t1.ATTRIBUTE
@茂茂: 执行时通过了,只是数量不对。