房天下 > 房天下问答 > 业主生活 > 其他
  • SQL 取分组后前三条数据

    user表user_id user_name customer_id 1 a ss1 2 a ss2 . . . 200 z ss200customers表customer_id customer_name sequence ss1 sa 20 ss2 sb 36 . . . ss200 szxd 10SQL:select user_name,customer_namefrom user u,customer cwhere u.customer_id=c.customer_idorder by user_id,c.sequence结果:user_name customer_name a sa a sb a sc . . . z szxd这段SQL将user和customer管理起来,我现在想根据 user来进行分组,取排序后每个user的前3条数据,想问下这样的SQL怎么写(注:使用的是Oracle数据库)

    提问者:satoshi1126

    发布于2011-01-18

共1个回答
  • datangwuben 丨Lv 1
    在你的基础上,提供一个思路吧:首先要使用ORACLE的伪列rownum,然后要想分组,你得有聚焦函数,否则是没有意义的。另外在group by 之后,必须要使用having子句。select中的rownum,可以没有。另外,由于使用了rownum作为分组条件,所以实际上,跟没分组效果一样的。但是这样使用语法上可以保证正确。如果没有count(*),group by是无法使用的。select rownum,user_name,customer_name,count(*) from user u,customer c where u.customer_id=c.customer_id group by rownum,user_name,customer_namehaving rownum<=3order by user_id,c.sequence
    +1 2011-01-18 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。