一个十分简单的问题求解!!!!

leileibaby 2004-11-21 11:51:34
我的表结构
名字 年龄 民族 成绩
1 10 1 20
1 20 1 40
1 29 1 60
2 11 1 10
2 17 1 30
。。。。。。。。。
要求返回的结果是
名字 年龄 民族 成绩
1 10 1 20
2 11 1 10
简单的说就是只要是名字一样,就只取靠前的记录



...全文
129 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
friendly_2008 2004-11-21
  • 打赏
  • 举报
回复
/****
我的意思是每个人不管年龄或成绩怎么样,每个人只返回一条记录(不管年龄和成绩),有多条记录的取其中任意一条就好!谢谢大家,再帮我出出主意!!!!!

****/


这样

Select * from Table a inner join

(Select 名字,成绩=min(成绩) from Table group by 名字)b

on a.名字=b.名字 and a.成绩=b.成绩

order by a.名字




Seelct 名字, 年龄, 民族, 成绩 from Table

group by 名字, 年龄, 民族, 成绩

leileibaby 2004-11-21
  • 打赏
  • 举报
回复
我的意思是每个人不管年龄或成绩怎么样,每个人只返回一条记录(不管年龄和成绩),有多条记录的取其中任意一条就好!谢谢大家,再帮我出出主意!!!!!
didoleo 2004-11-21
  • 打赏
  • 举报
回复
那你不要取成绩最低的,那总有什么规则吧,看你上面的返回结果
1 10 1 20
2 11 1 10

你就是取的名字相同的当中成绩最低的. playyuer(退休干部 卧鼠藏虫) 写的是对的.

如果你要把成绩高的取出来.那就把min()换成max()
leileibaby 2004-11-21
  • 打赏
  • 举报
回复
那我最上面的那条记录,并不是成绩最低的那有怎么写呢?请兄台指教。
playyuer 2004-11-21
  • 打赏
  • 举报
回复
成绩靠前?
select *
from T a
where 成绩 = (select min(成绩) from T where 名字 = a.名字)



年龄靠前?
select *
from T a
where not exists (select * from T where 名字 = a.名字 and 年龄 > a.年龄)
friendly_2008 2004-11-21
  • 打赏
  • 举报
回复

Select * from Table a inner join

(Select 名字,成绩=min(成绩) from Table group by 名字)b

on a.名字=b.名字 and a.成绩=b.成绩

order by a.名字
vividboy 2004-11-21
  • 打赏
  • 举报
回复
可以用PL/SQL 过程语言查询。
就像编程一样,加一个条件!
zzxiaoma 2004-11-21
  • 打赏
  • 举报
回复
select distinct 名字,年龄,民族,成绩 from table
ljial 2004-11-21
  • 打赏
  • 举报
回复
Seelct 名字, 年龄, 民族, 成绩 from Table

group by 名字, 年龄, 民族, 成绩

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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