关于SQL语句TOP N和ORDER BY的问题!希望各位能帮个忙,不胜感激!

Lukiya 2004-12-21 04:37:25
想要取出一个表中的前10条纪录
我用如下SQL语句
"SELECT TOP 10 SongID,SongName,ListenHits,DownHits FROM Songs WHERE SingerID = 5 ORDER BY (ListenHits+DownHits) DESC"

但是问题来了
因为数据库中有很多条(ListenHits+DownHits)相等的语句。
所以取出来的纪录大于10条。

这可如何是好??

有人说用FOR循环,可是如果纪录不满10条会引起索引溢出错误。
然后又有人说在For循环内加IF判断,那样的话会增加程序开销,不是我想要的。

所以想问一下,有没有办法在一条SQL语句中准确的提取出想要的纪录条数而不用到程序中去判断或循环。
...全文
494 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lukiya 2004-12-21
  • 打赏
  • 举报
回复
好了好了,呵呵,看错目录了

我试了这条语句
SELECT TOP 10 * from (SELECT SongID,SongName,ListenHits,DownHits FROM Songs WHERE SingerID = 5 ORDER BY (ListenHits+DownHits) DESC)

也可以,而且我能理解它的意思。

但是你那条a.*的也可以,放分了!
谁能讲一下a.*那条语句是什么意思?
Lukiya 2004-12-21
  • 打赏
  • 举报
回复
SELECT TOP 10 a.* from (SELECT SongID,SongName,ListenHits,DownHits FROM Songs WHERE SingerID = 5 ORDER BY (ListenHits+DownHits) DESC) a

这个语句是什么意思?
嵌套查询我知道,但是a.*是什么意思?谁解释下。

还有,用了你这个语句一条纪录都显示不出来了………………
Lukiya 2004-12-21
  • 打赏
  • 举报
回复
TOP 10 可以规定取出10条。
但是如果后面的ORDER BY N DESC 在数据库中有纪录相等

比如0号纪录的N为50
1号纪录的N也为50
那么取出来的就要多一条。
再者,如果2号纪录的N也为50,则又要多一条。

不信你们可以去试下。
jblcj 2004-12-21
  • 打赏
  • 举报
回复
top 10本身就是只取10条记录,怎么会不行呢?不明白
liuzxit 2004-12-21
  • 打赏
  • 举报
回复
TOP 10 也不行嗎﹖
xuandme000 2004-12-21
  • 打赏
  • 举报
回复
top 10 还能取出超过10条的记录????
不明白!
wangxy0919 2004-12-21
  • 打赏
  • 举报
回复
你执行你写的语句不能只显示前十条记录吗?不是很明白你的意思
aoyo 2004-12-21
  • 打赏
  • 举报
回复
SELECT TOP 10 a.* from (SELECT SongID,SongName,ListenHits,DownHits FROM Songs WHERE SingerID = 5 ORDER BY (ListenHits+DownHits) DESC) a
Overriding 2004-12-21
  • 打赏
  • 举报
回复
楼主出了取出10条记录还有什么要求啊?
sean168 2004-12-21
  • 打赏
  • 举报
回复
◢★◣。 ◢★◣。 ★诞☆
◢■■◣。 崱觥雳帯? ☆节★
◢■■■◣。 ◢■■■◣。 ★快☆
︸︸||︸︸ !!︸︸||︸︸ ☆乐★
祝圣诞节快乐 ^_^!!☆°★°∴°°∴ ☆°.·★°∴°.

°★.☆° .★·°∴°★.°·∴°☆ ·°∴° ☆..·.
………………………………………………………………………………

62,249

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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