这个sql语句为什么搞不定?sql高手请进!

ming1 2000-09-08 10:17:00
SELECT DISTINCT 序号, 参赛者号码, 成绩第次, 成败, 成绩, MAX( 成绩 ) Fieldmatch."Max(Fieldmatch.成绩)"
FROM "FieldMatch.DB" Fieldmatch
WHERE 成败 = 't'
GROUP BY 参赛者号码, 成绩, 序号, 成绩第次, 成败
HAVING (COUNT( 参赛者号码 ) = 1)
ORDER BY Fieldmatch."Max(Fieldmatch.成绩)" DESC

执行上面这条sql语句,为什么会得到以下情况的结果集:
1.具有相同”参赛者号码“的记录仍然会出现多条,count(fieldname)=1有用吗? (10分)
2.Group by 一定要选全table所有字段吗,否则会报错,这还有什么用呢?(10分)
3.Delphi的Query 控件支持 top 用法吗,为什么一用就报错?有办法只显示n条记录吗?(10分)
4.想要得到成绩排在前8名的不同运动员号码的降序(以成绩)结果集,怎么写sql(20分)
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SimonDW 2000-09-11
  • 打赏
  • 举报
回复
1.把“参赛者号码”放在最后如何?
bpc 2000-09-11
  • 打赏
  • 举报
回复
你的’参赛者号码‘字段前还要加上“DISTINCT ”
你的那一条COUNT语句不对整个记录集起作用。。。不能达到你的要求。。。
QUERY是支持TOP 的。。。。。错误 原因很多。。。。

freeman258 2000-09-10
  • 打赏
  • 举报
回复
这种情况不要用 GROUP BY 来做,你应该仔细看看Group by 的用法!
Delphi 的 Query 控件支持的SQL要看所用的数据库系统,Paradox 好
像不支持TOP, 对于桌面数据库我建议你用Access,以下的SQL可以在
Access 中执行!

4 SELECT DISTINCTROW TOP 8 序号, 成绩
FROM Fieldmatch
ORDER BY 成绩 DESC
spring 2000-09-09
  • 打赏
  • 举报
回复
3.query1.first.
显示n条记录:放在临时表里好了.
zcw 2000-09-09
  • 打赏
  • 举报
回复
2.Group by 一定要选全table所有字段.没有办法
3.你可以用Delphi的存储过程控件,另外把语句写进存储过程里,你用的是sqlserver吧。
实在不行你就把所有运动员的最大成绩的记录插到一个临时表里,在取前8条记录。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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