一,
查询表1中字段b有重复的记录?
二,
查询表1,按字段b排序,取最大的三条记录?

解决方案 »

  1.   

    1
    select b from 表1 group by b having count(*)>12
    select * from 表1 where rownum<=3 order by b desc ;
      

  2.   


    1
    select b from 表1 group by b having count(*)>12
    select * from 表1 where rownum<=3 order by b desc ;
      

  3.   

    select t.* from (select * from 表1 rder by b desc )t where rownum<=3
      

  4.   

    第二题如果用标准的sql有办法实现吗?
      

  5.   

    第二题select * from 表1 where rownum<=3 order by b desc ;这样写是错的。
    应该用jiazheng(飛飞)的写法或者使用
    select row_number() over (order by b) rn from  表1  where rn<=3
      

  6.   

    1
    select b from 表1 group by b having count(*)>1
    --这样作的结果是只能查询出字段B的值,这样作有效吗?在实际工作中,大多数情况下,需要的不是这样的结果.要得到的是这条记录的其他字段或者*,所以这句话跟本不实用.
    2
    select * from 表1 where rownum<=3 order by b desc ;
      

  7.   

    (1)select * from 表1 where rownum<=3 order by b desc (2)select t.* from (select * from 表1 rder by b desc )t where rownum<=3关于这上面两句,(1)错在什么地方呢。出来的结果好像是一样的啊。
    最开始,我把第一句理解为先去3条,再降序,可是好像查询的结果,好像也是先
    降序,再取前3条的。能详细说明一下吗?(1)和(2)的区别。
      

  8.   

    (1)rownum依據data insert的先後順序不同會有改變.
    應該用(2)
      

  9.   

    (1)rownum依據data insert的先後順序不同會有改變.
    應該用(2)
    ===========================正解`