在数据库里选TOP10的用法?

yishuxt 2003-09-14 04:15:31
set rs=conn.execute("SELECT top 10 id,Singer,ClassID,SClassID,NClassID,MusicName,hits FROM MusicList order by hits desc")

这是一个音乐点击排行榜TOP10的选择语句,他怎么实现的呢?
为什么要把Musiclist这个表单里的所有字段都列出来呢,倒底这句话是告诉机算机怎么做的?
为什么不可以是
set rs=conn.execute("SELECT top 10 hits FROM MusicList order by hits desc")
点击排行和这个表单里的的其他字段有关系吗?为什么要全部列出来,我去掉一个都不行,为什么,我只想搞懂用法,
我是菜鸟,分不多.但一定会结贴给分的,谢谢!
...全文
183 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yishuxt 2003-09-25
  • 打赏
  • 举报
回复
了解了,谢谢大家。结帖了!
summersun418 2003-09-16
  • 打赏
  • 举报
回复
我的观点:
至于你删除某个字段所出现程序错误应该是ADODB.FIELDS之类的错误吧.现在我给你说种方法:用文本编辑工具(或你常用的ASP编程工具),打开该源代码,用编辑菜单中的查找命令对这个语句中"SELECT top 10 id,Singer,ClassID,SClassID,NClassID,MusicName,hits FROM MusicList order by hits desc"的这些{id,Singer,ClassID,SClassID,NClassID,MusicName,hits }字段进行查找,看源文件中其他地方对他们的调用情况.如果在其他地方没有再次出现该字段的信息,说明这个字段没有利用价值,可以不取出;相反,它在其他地方被使用,那你删除就会出现字段错误.

这是我的一些经验看法.希望对你有一定的启示.
tripofdream 2003-09-16
  • 打赏
  • 举报
回复
>>>
在SELECT * FROM MusicList order by id="&id里我没有涉及到musicname字段吧?
也就是说,按照一个条件去查询数据库的一条记录,如果查找到一个符合条件的记录,那么这条就被选定,当我指针定在这条记录上时,这条记录的所有资料都可以用rs("XXX")提取出来,这是成立的

这里*是通配符,代表表中所有字段名,如果指定字段名,则结果只包含这个字段而不包含其它字段。
ling_l 2003-09-16
  • 打赏
  • 举报
回复
下面有调用吧,所以去掉就出错了啊
xie12898 2003-09-16
  • 打赏
  • 举报
回复
你动了这个,也许不是这里的错误啊,别的地方用到这个rs("你去掉的字段")出错了
除非,你测试一下,接着一个response.end(),会不会有错,如果有错,就拐了
yishuxt 2003-09-16
  • 打赏
  • 举报
回复
谢谢楼上的,现在我知道order by hits desc是什么意思了
你们的意思一直都是列出所有字段可很快的提取到我要的内容,如:musicname,等
但是,
如果我用SELECT * FROM MusicList order by id="&id
就可以选到这个ID号的记录,我同样可以提取这条记录的所有字段的资料呀,列如:RS("musicname")我就可以提取音乐名这个字段的记录,
在SELECT * FROM MusicList order by id="&id里我没有涉及到musicname字段吧?
也就是说,按照一个条件去查询数据库的一条记录,如果查找到一个符合条件的记录,那么这条就被选定,当我指针定在这条记录上时,这条记录的所有资料都可以用rs("XXX")提取出来,这是成立的
现在问题是:在
set rs=conn.execute("SELECT top 10 id,Singer,ClassID,SClassID,NClassID,MusicName,hits FROM MusicList order by hits desc")
中,我去掉任何一个字段都不行,语法错误.
如果按你们说的,我去掉一个我不要的字段,应该不会报错呀.
yaozhg 2003-09-16
  • 打赏
  • 举报
回复
set rs=conn.execute("SELECT top 10 id,Singer,ClassID,SClassID,NClassID,MusicName,hits FROM MusicList order by hits desc")


hits是存储点击率字段。
order by hits desc的意思是用hits里的数字排序。

classID是分类。musicname是名字。其实是在那个页面上,所有的都用上了。

比如名字是musicname,要是你不读出来,怎样显示?如



看了老半天,才看明白你想问什么。


奶的。他列出这些字段有二个好处:
1、只需单独读取某些字段,一些不必显示的就不读取出来,这样就可以省资源了。
2、写上所有的名段名也比用“*”要率效率

是网上的文章看回来的,错了别怪我。
hello_ld 2003-09-16
  • 打赏
  • 举报
回复
不可能,你自己在看看。其实很少列出全部字段的。
yishuxt 2003-09-16
  • 打赏
  • 举报
回复
<%
m=0
set rs=conn.execute("SELECT top 10 id,Singer,ClassID,SClassID,NClassID,MusicName,hits FROM MusicList order by hits desc")
if not Rs.eof then
do while not rs.eof
m=m+1
%>
<tr>
<td width="12%" height="10"><img src="../../tywb/music/images/s.gif" width="10" height="10"></td>
<td width="68%"><a href="#" onMouseOver="window.status='<%=rs("MusicName")%>';return true" onMouseOut="window.status='';return true" onclick="window.open('Yxplay.asp?id=<%=rs("id")%>','Yxplay','width=300,height=230');"><%=rs("MusicName")%></a></td>
<td width="20%"><%=rs("hits")%></td>
</tr>
<%
if m>=10 then exit do
rs.movenext
loop
else
response.write "尚无收录"
end if
rs.close
%>
这是源代码.
可能大家没明白我的意思,我一直以为,按照一个条件去查询数据库的一条记录,如果查找到一个符合条件的记录,那么这条就被选定,当我指针定在这条记录上时,这条记录的所有资料都可以用rs("XXX")提取出来啊.
在为什么在选择的时候要涉及那么多的字段?
如果我用SELECT * FROM MusicList order by id="&id
就可以选到这个ID号的记录,我同样可以提取这条记录的所有字段的资料呀,这里我没有涉及到ID以外的任何字段吧?
而且在

set rs=conn.execute("SELECT top 10 id,Singer,ClassID,SClassID,NClassID,MusicName,hits FROM MusicList order by hits desc")
中,我去掉任何一个字段都不行,语法错误.
milanrain 2003-09-14
  • 打赏
  • 举报
回复
这需要相关的参数啊
很简单的啊
只要把需要的参数从数据库中取出来就可以了啊!
用rs("xxx")取出!
BainStudio 2003-09-14
  • 打赏
  • 举报
回复
他把其他字段读取出来肯定有用啊.
大个比方.你不能只要取得TOP10的数字吧.
要把他们的名字,甚至连接地址也要找出来.那自然需要很多参数了.这不就需要了么...
IamScout 2003-09-14
  • 打赏
  • 举报
回复
hits就是点击率,按点击率排序,再取前十位到记录集,看看sql吧。
alan815 2003-09-14
  • 打赏
  • 举报
回复
估计是其他程序用到了选出的其他字段。你看看源程序。
wandola 2003-09-14
  • 打赏
  • 举报
回复
因为你在后面的程序中要用到这些字段啊,
比如说你查出来肯定要显示歌名吧。呵呵,所以要查询这些字段。
wanghr100 2003-09-14
  • 打赏
  • 举报
回复
因为,后面还需要用到查询所得到的字段.

SELECT top 10
id,Singer,ClassID,SClassID,NClassID,MusicName,hits
FROM MusicList
order by hits desc

这样子,你应该更能看明白些.
ttt2 2003-09-14
  • 打赏
  • 举报
回复
这样列只是效率比* 高,
他的意思主要是根据点击率最高的前10条
cuipeng99 2003-09-14
  • 打赏
  • 举报
回复
还要显示标题,ID 等等吧!

代码帖出来look,look!
mjwgtm 2003-09-14
  • 打赏
  • 举报
回复
你又没有把全部代码岾出来我们怎么知道其他字段有什么用

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧