首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

哪位高手来帮忙写下效率高的SQL!

2012-04-24 
谁来帮忙写下效率高的SQL!!!!!我有这样一张表numbername123张三1234李四123张三456李白12345杜甫要求的数

谁来帮忙写下效率高的SQL!!!!!
我有这样一张表
number name
123 张三
1234 李四
123 张三
456 李白
12345 杜甫

要求的数据:
规则1:先去掉表中的重复数据(比如:1、3条数据重复,处理后应该为一条)
规则2:取前三位为123的记录
帮忙写个效率高的SQL

[解决办法]
10g及以上适用:
select * from
(select t.*, row_number() over(partition by number,name) rn from table t where regexp_like(name,'^123')
)
where rn = 1;
[解决办法]
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);

[解决办法]

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

[解决办法]
探讨
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);


[解决办法]
顶楼上的 LIKE 123开头的可以用到索引的
[解决办法]
探讨
select distinct number,name from table1
where number like '123%'

热点排行