查询问题:相同的Field1,Field2只取一条纪录,但是要返回Field1,Field2,Filed3,Field4等多个字段?

sharkxie 2003-05-07 04:18:40
即按照Field1,Field2分组,每组只取一条纪录
如果用Group By Field1,Field2
则怎么在Select 后面包括Field1,Field2,Field3,Field4?
可能问题比较弱,希望大家指点一下!
谢谢!
...全文
148 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharkxie 2003-05-08
  • 打赏
  • 举报
回复
看了前面两个回复,以为很简单
科室后面的答复让我糊里糊涂的
不过现在用前面的答复暂时可以解决问题!
谢谢先!
playyuer 2003-05-07
  • 打赏
  • 举报
回复
《一道褒贬不一的 SQL 考试题》
http://www.triaton.com.cn/cgi-bin/lb5k/topic.cgi?forum=4&topic=97&show=0

10.列印各科成绩前三名的记录:(不考虑成绩并列情况)
学生ID,学生姓名,课程ID,课程名称,成绩,教师ID,教师姓名

如果仅从成绩考虑前三名的人,利用相关子查询的知识:

SELECT *
FROM 成绩表 t1
WHERE 成绩 IN (SELECT TOP 3 成绩
FROM 成绩表
WHERE t1.课程id = 课程id
ORDER BY 成绩 DESC
)
ORDER BY t1.课程id

这样查询的结果各科成绩前三名的记录数应该大于等于三,因为可能有并列情况,
如果小于三自然是该门课还没有那么多人考试!
如果不考虑并列情况,严格控制各科只列印三条记录,则使用"学生id"构造相关
子查询条件亦可:

SELECT *
FROM 成绩表 t1
WHERE 学生id IN (SELECT TOP 3 学生id
FROM 成绩表
WHERE t1.课程id = 课程id
ORDER BY 成绩 DESC
)
ORDER BY t1.课程id

happydreamer 2003-05-07
  • 打赏
  • 举报
回复
后面的用聚合函数
playyuer 2003-05-07
  • 打赏
  • 举报
回复
SELECT *
FROM T a
WHERE '[' + Field3 + '][' + Field4 + ']['+ Field5 + ']'
in (select Top 1 '[' + Field3 + '][' + Field4 + ']['+ Field5 + ']'
from T where field1=a.field1 and field2=a.field2)
happydreamer 2003-05-07
  • 打赏
  • 举报
回复
后面的要用聚合函数
playyuer 2003-05-07
  • 打赏
  • 举报
回复
SELECT *
FROM T a
WHERE Field3 + Field4 + Field5
in (select Top 1 Field3 + Field4 + Field5
from T where field1=a.field1 and field2=a.field2)
psxfghost 2003-05-07
  • 打赏
  • 举报
回复
select distinct Field1,Field2,max(Field3),max(Field4)
from table group by Field1,Field2
防止出现重复数据
dapper 2003-05-07
  • 打赏
  • 举报
回复
如果Field1,Field2分组,每组只取一条纪录的话,可以这样试试

select Field1,Field2,max(Field3),max(Field4) from TableName Group by Field1,Field2
caiyunxia 2003-05-07
  • 打赏
  • 举报
回复
select Field1,Field2,max(Field3),max(Field4)
from table group by Field1,Field2

34,838

社区成员

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

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