我有这样一张表
number   name
123      张三
1234     李四
123      张三
456      李白
12345    杜甫要求的数据:
规则1:先去掉表中的重复数据(比如:1、3条数据重复,处理后应该为一条)
规则2:取前三位为123的记录
帮忙写个效率高的SQL

解决方案 »

  1.   

    10g及以上适用:
    select * from
    (select t.*, row_number() over(partition by number,name) rn from table t where regexp_like(name,'^123')
    )
    where rn = 1;
      

  2.   

    create table mytable (my_number varchar2(16), my_name varchar2(16));select *
    from mytable x
    where my_number like '123%'
    and rowid = (select min(rowid) from mytable where my_number=x.my_number and my_name=x.my_name);
      

  3.   

    select distinct number,name from table1
    where substr(number,1,3)='123'
    就好了
      

  4.   

    这样的话,除非建了SUBSTR的索引,否则会全表扫描的
      

  5.   

    select distinct number,name from table1 
    where number like '123%'
      

  6.   

    顶楼上的 LIKE 123开头的可以用到索引的