日期:2014-05-16 浏览次数:20850 次
--你的第一句 select count(user_id) from (select distinct user_id from 表1) --你的第二句 select count(*) from (select * from 表2 where product_name is not null order by product_bussiness_count desc) where user_id={0} and sort_id=11 and (rownum<2) --你说一个用户提取一个产品 那可不可以理解为 表2中的sort_id和表1中的user_id一一对应? --你是不是就是要统计 不同的user_id对应的你第二句查询结果的总数量? --那么可以这么做 select count(*) from (select * from 表2 where product_name is not null order by product_bussiness_count desc) where user_id in ([color=#FF0000]select count(user_id) from (select distinct user_id from 表1)) [/color] and sort_id=11 and rownum<2 --中间标出了一段就是合并修改的
------解决方案--------------------
select rownum,c.*
from
(
select a.user_id
,b.*
,row_number() over(partition by a.user_id order by b.product_bussiness_count desc) rn
from 表1 a,表2 b
where a.user_id = b.user_id and b.product_name is not null and b.ort_id=11
) c
where rn = 1