
2008-7-1 22:19
icedot
请教:如何高效的达到此过滤效果
有一个数据表,其中的数据如下所示:
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%左右).
2008-7-1 22:52
bailiu2002
我暈
科目總共就那么几種 需要這樣嗎?
2008-7-1 23:01
smthgdin
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从句性能很低。
2008-7-2 08:53
icedot
to bailiu2002
只是举的一个例子,实际数据有五十万条以上,当然有必要考虑效率问题
to smthgdin
谢谢,我试试
2008-7-2 09:37
smthgdin
我的第一层select 多了no字段 要去掉。
2008-7-2 13:36
icedot
to smthgdin
您的这个写法,和我的效果差不多.
不过这个还不是我最终要得到的结果,开始是想要把问题简化,所以把重要部分抽出来举的一个例子,不过看来还是不能简化,因为简化了,就偏离方向了.
实际问题是这样的.
有一个新闻的发布系统,里面有文章:
1.湖北秭归县开通“七一”关怀热线(1)
2.湖北秭归县开通“七一”关怀热线(2)
3.台湾"高考"考场另类现象:清凉辣妹送补品
4.虎照真是一个农民制造的谎言? (1)
5.虎照真是一个农民制造的谎言? (2)
6.王岐山强调加强奥运保障工作的责任感和紧迫感
7.分析称时代华纳出售AOL Google或损失5亿美元
8.钢筋水泥下的货币战争 沈阳是房地产世外桃源
....
现在要读取最新文章,或是读某个分类的文章.
像:
1.湖北秭归县开通“七一”关怀热线(1)
2.湖北秭归县开通“七一”关怀热线(2)
这类文章,就是一篇新闻,只是进行了分页,所以对于这类新闻,只读取第一页,且显示标题为:湖北秭归县开通“七一”关怀热线
对于新闻,还需要把它发表日期,链接地址(同一篇新闻的每一页的地址不同),分类读取出来.
还请指教,我的语句要如何优化,谢谢.
2008-7-2 14:47
smthgdin
哦
你加多个序号字段可能就好解决了。
dstinct后,页面显示标题。点击进去就可以看到1,2,3。。。。
2008-7-2 18:10
smxzgh
表结构设计问题
2008-7-2 21:19
zikao419
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
这条语句好像不能满足“第一条”的条件吧
2008-7-5 09:48
Ryan-liumin
呵呵 我的追求简单 还没到追求性能的那个阶段
页:
[1]

Powered by ITPUB论坛