row_number()over()求所有非重复记录 这个语句详解

解决方案 »

  1.   

    select t.*,row_number()over(partition by XXX order by XXXX) rn from tb t;
    如果rn相同,则是重复的。
      

  2.   

    我的意思是 用这个语句 达到distinct一样的效果! 就是重复列只显示一个
      

  3.   

    还有我问下:count(1) 和Order by 1 这俩个是什么意思啊
      

  4.   

    干嘛非要用这个呢 distinct很好嘛select * from (
      2  select deptno,job,row_number() over(partition by deptno,job order by deptno,job) rn from emp)
      3  where rn=1;DEPTNO JOB               RN
    ------ --------- ----------
        10 CLERK              1
        10 MANAGER            1
        10 PRESIDENT          1
        20 ANALYST            1
        20 CLERK              1
        20 MANAGER            1
        30 CLERK              1
        30 MANAGER            1
        30 SALESMAN           19 rows selected
      

  5.   

    count(1)和count(*) 一样 但是用常量1速度快
    order by 1 是按照select 后的第一个字段排序