日期:2014-05-17  浏览次数:21017 次

SQL语句求助。如何选定分组中的“某一行”数据?
比如两个表TB_Class(班级)、TB_Student(学生)
TB_Class中两列:
 ID Name;
 1  高三一班
 2  高三二班

TB_Student表中五列:
 ID Class_ID Name Age Sex
 1   1       张三 16  男
 2   1       李四 17  女
 3   2       王五 18  女

现在如何从TB_Student中选择每一个班里挑出年龄最小的那一名学生的所有情况?
group by 的话好像不行吧。

----------------------
沙发10分。

------解决方案--------------------
select *  from(select min(id) over(partition by entity_id) m,s.* from s_entity_attribute s)x where x.m=x.id 
类似这样用分析函数试试
按班分组后查出最小的在关联查班名
------解决方案--------------------
以下2个那个快?那个好理解?
---------------------
select t1.*
from TB_Student t1,
(select Class_ID,  mix(Age) mixAge
from TB_Student
group by Class_ID) t2
where t2.Class_ID=t1.Class_ID
and t2.mixAge=t1.Age
----------------------------
select *
from TB_Student t1
where t1.Age=(  SELECT Min(Age) FROM TB_Student t2 WHERE t1.Class_ID = t2.Class_ID )
----------------------------