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

sharkxie 2003-05-07 04:18:40
即按照Field1,Field2分组,每组只取一条纪录
如果用Group By Field1,Field2
则怎么在Select 后面包括Field1,Field2,Field3,Field4?
可能问题比较弱,希望大家指点一下!
谢谢!
...全文
64 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-07 04:18
社区公告
暂无公告