- 最后登录
- 2016-8-16
- 在线时间
- 147 小时
- 威望
- 207
- 金钱
- 2622
- 注册时间
- 2011-10-31
- 阅读权限
- 60
- 帖子
- 170
- 精华
- 0
- 积分
- 207
- UID
- 75
|
1#
发表于 2012-2-27 14:56:41
|
查看: 4135 |
回复: 1
原语句:
- select tt.*,rownum from
- --1.开头为关键字a的3条记录
- (select t.name, sum(t.time) c from tab1 t
- where t.type = '0' and (t.name like 'a%' or t.name1 like 'a%' or t.name2 like 'a%')
- group by t.name order by c desc) tt
- where rownum < 5
- union all
- --2.中间包含关键字a的3条记录
- select tt.*,rownum from
- (select t.name, sum(t.time) c from tab1 t
- where t.type = '0' and (t.name like '%a%' or t.name1 like '%a%' or t.name2 like '%a%')
- group by t.name order by c desc) tt
- where rownum < 4
- --3.结尾为关键字a结尾的3条记录
- union all
- select tt.*,rownum from
- (select t.name, sum(t.time) c from tab1 t
- where t.type = '0' and (t.name like '%a' or t.name1 like '%a' or t.name2 like '%a')
- group by t.name order by c desc) tt
- where rownum < 4;
复制代码
我提出的2个建议是:
1、使用中间表来保存需要处理的记录,然后后续处理(我这里使用with tt as子查询来处理)
2、第2个子查询有问题,改成正则表达式可以简单的实现,因此建议第1、3个子查询也用正则表达式
除此之外各位还有没啥建议? |
爱老婆,爱FM,爱音乐;挨踢,爱折腾,爱Oracle
|
|