ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » MS SQL Server » 请教:如何高效的达到此过滤效果

标题: [原创] 请教:如何高效的达到此过滤效果
离线 icedot
初级会员



精华贴数 0
个人空间 0
技术积分 10 (89691)
社区积分 0 (718855)
注册日期 2005-12-21
论坛徽章:0
      
      

发表于 2008-7-1 22:19 
请教:如何高效的达到此过滤效果

有一个数据表,其中的数据如下所示:
NO Name
1  高等数学(1)
2  高等数学(2)
3  大学语文(1)
4  大学语文(2)
5  英语
......
其中的数据有好几十万条,现在需要查询得到如下结果:
高等数学
大学语文
英语

即对于含有(1)(2)..的数据,只取第一条.
我目前采用的方法是:

select  replace(Name,'(1)','') Name where (right(Name,1)<>")" ) or (right(name,3)='1')

虽然能实现功能,但感觉效率不高,请教高手,有何更好的方式(注:含有(1)(2)..这种数据占总数据量的25%左右).


只看该作者    顶部
离线 bailiu2002
初级会员



精华贴数 0
个人空间 0
技术积分 141 (12697)
社区积分 0 (1317414)
注册日期 2007-3-25
论坛徽章:1
2008北京奥运纪念徽章:皮划艇激流回旋     
      

发表于 2008-7-1 22:52 
我暈
科目總共就那么几種 需要這樣嗎?


__________________
多情自古伤离别,更那堪冷落清秋节!

今宵酒醒何处?燈火街頭,冷風殘月。
-------------------------------------------
Nothing should be taken for granted.
只看该作者    顶部
离线 smthgdin
老会员



精华贴数 0
个人空间 0
技术积分 1395 (1212)
社区积分 1 (35162)
注册日期 2004-5-13
论坛徽章:2
ITPUB元老开发板块每日发贴之星    
      

发表于 2008-7-1 23:01 
select distinct tt.no,tt.name from (select no,case when right(name,1)=')'  then substring(name,1,len(name)-3) end as name from 表) as tt

试试这个看怎样。我觉得你的where从句性能很低。


__________________
www.kooboy.net
只看该作者    顶部
离线 icedot
初级会员



精华贴数 0
个人空间 0
技术积分 10 (89691)
社区积分 0 (718855)
注册日期 2005-12-21
论坛徽章:0
      
      

发表于 2008-7-2 08:53 
to bailiu2002
只是举的一个例子,实际数据有五十万条以上,当然有必要考虑效率问题

to smthgdin
谢谢,我试试


只看该作者    顶部
离线 smthgdin
老会员



精华贴数 0
个人空间 0
技术积分 1395 (1212)
社区积分 1 (35162)
注册日期 2004-5-13
论坛徽章:2
ITPUB元老开发板块每日发贴之星    
      

发表于 2008-7-2 09:37 
我的第一层select 多了no字段 要去掉。


__________________
www.kooboy.net
只看该作者    顶部
离线 icedot
初级会员



精华贴数 0
个人空间 0
技术积分 10 (89691)
社区积分 0 (718855)
注册日期 2005-12-21
论坛徽章:0
      
      

发表于 2008-7-2 13:36 
to smthgdin
您的这个写法,和我的效果差不多.
不过这个还不是我最终要得到的结果,开始是想要把问题简化,所以把重要部分抽出来举的一个例子,不过看来还是不能简化,因为简化了,就偏离方向了.

实际问题是这样的.
有一个新闻的发布系统,里面有文章:

1.湖北秭归县开通“七一”关怀热线(1)
2.湖北秭归县开通“七一”关怀热线(2)
3.台湾"高考"考场另类现象:清凉辣妹送补品
4.虎照真是一个农民制造的谎言? (1)
5.虎照真是一个农民制造的谎言? (2)
6.王岐山强调加强奥运保障工作的责任感和紧迫感
7.分析称时代华纳出售AOL Google或损失5亿美元
8.钢筋水泥下的货币战争 沈阳是房地产世外桃源
....

现在要读取最新文章,或是读某个分类的文章.
像:

1.湖北秭归县开通“七一”关怀热线(1)
2.湖北秭归县开通“七一”关怀热线(2)
这类文章,就是一篇新闻,只是进行了分页,所以对于这类新闻,只读取第一页,且显示标题为:湖北秭归县开通“七一”关怀热线
对于新闻,还需要把它发表日期,链接地址(同一篇新闻的每一页的地址不同),分类读取出来.
还请指教,我的语句要如何优化,谢谢.


只看该作者    顶部
离线 smthgdin
老会员



精华贴数 0
个人空间 0
技术积分 1395 (1212)
社区积分 1 (35162)
注册日期 2004-5-13
论坛徽章:2
ITPUB元老开发板块每日发贴之星    
      

发表于 2008-7-2 14:47 

你加多个序号字段可能就好解决了。
dstinct后,页面显示标题。点击进去就可以看到1,2,3。。。。


__________________
www.kooboy.net
只看该作者    顶部
离线 smxzgh
一般会员



精华贴数 0
个人空间 0
技术积分 308 (6395)
社区积分 0 (625028)
注册日期 2005-9-22
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-7-2 18:10 
表结构设计问题


__________________
---------------------------------------------------
1    32   31   30   29   28   27   26   25   
2    33   56   55   54   53   52   51   24   
3    34   57   72   71   70   69   50   23   
4    35   58   73   80   79   68   49   22   
5    36   59   74   81   78   67   48   21   
6    37   60   75   76   77   66   47   20   
7    38   61   62   63   64   65   46   19   
8    39   40   41   42   43   44   45   18   
9    10   11   12   13   14   15   16   17   
只看该作者    顶部
离线 zikao419
初级会员



精华贴数 0
个人空间 0
技术积分 18 (60181)
社区积分 0 (1434173)
注册日期 2007-6-13
论坛徽章:0
      
      

发表于 2008-7-2 21:19 
select distinct tt.no,tt.name from (select no,case when right(name,1)=')'  then substring(name,1,len(name)-3) end as name from 表) as tt

这条语句好像不能满足“第一条”的条件吧


只看该作者    顶部
离线 Ryan-liumin
ITpub-CFO


精华贴数 0
个人空间 0
技术积分 4331 (320)
社区积分 9521 (165)
注册日期 2008-5-4
论坛徽章:3
奥运纪念徽章体育版块博采纪念徽章    
      

发表于 2008-7-5 09:48 
呵呵   我的追求简单 还没到追求性能的那个阶段


__________________
....踩章的交税...10P

....菠菜赢的交税10%

....用于救济广大穷苦大众
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问