新闻表相关字段:
id:新闻ID
title:新闻标题新闻评论表相关字段:
id:评论ID
newsid:新闻ID//表示此条评论从属于哪条新闻现在jsp页面中要显示一个"新闻热评排行榜",也就是评论最多的前十名
比如,
TOP1 网上现学生侮辱老师视频 [51820]
TOP2 警察鸣枪示警配枪险被抢 [29440]
...
{TOP*  新闻标题 [评论条数]}
其他:oracle数据库,eclipse,struts1.2,公司自己写的jdbc框架
求一条sql语句,或者比较好的解决方案

解决方案 »

  1.   

    select a.title,b.count_newsid from 新闻表 a,(select top 10 (select count(newsid) count_newsid ,newsid from 评论表 group by newsid)) b where a.id=b.newsid order by b.count_newsid desc
    我用的是sqlserver的top函数
    你改成oracle的rownum函数来取前几条。
      

  2.   


    select *  from 新闻表 
     where id in(
    select newsid  from
    (
    select newsid from 新闻评论 
    group by newsid 
    having count(id) desc
     )
    rownum<=10
    )这个应该就可以了,写的多了点,你在简化一下
      

  3.   

    select *  from 新闻表 
     where id in(
    select newsid  from
    (
    select newsid from 新闻评论 
    group by newsid 
    order by count(id) desc
     )
    rownum<=10
    )不好意思,我上面写错了
      

  4.   

    select * from (select a.id , a.title , count(*) count1 from 新闻表 a , 新闻评论表 b where a.id = b.newsid group by a.id , a.title order by count(*) desc) where rownum<=10
      

  5.   

    select top 10 a.title,b.count_newsid from 新闻表 a, (select count(newsid) count_newsid ,newsid from 评论表 group by newsid) b where a.id=b.newsid order by b.count_newsid desc 这个可以,但效率比较低。