一个查询问题
表: 孩子
id 年龄 姓 名
1 1 李 三 ****
2 2 李 四
3 1 王 四
4 2 王 五
5 3 王 靠
6 4 王 三 ****
7 5 王 三
查询:名叫“三”的 ,各个“姓”中,年龄最小的那个(假设 每个“姓”都至少有一个年龄为1的孩子,再有同“姓”的孩子“年龄”加1)
应该得到的结果是
1 1 李 三
6 4 王 三
应该如何实现
------解决方案--------------------select
t.*
from
表 t
where
t.名= '三 '
and
not exists(select 1 from 表 where 姓=t.姓 and 名=t.名 and 年龄 <t.年龄)
------解决方案----------------------方法一
Select * From 表 A
Where Not Exists(Select 年龄 From 表 Where 姓 = A.姓 And 名 = A.名 And 年龄 < A.年龄)
And A.名 = '三 '
--方法二
Select * From 表 A
Where 年龄 = (Select Min(年龄) From 表 Where 姓 = A.姓 And 名 = A.名)
And A.名 = '三 '
--方法三
Select A.* From 表 A
Inner Join
(Select 姓, 名, Min(年龄) As 年龄 From 表 Group By 姓, 名) B
On A.姓 = B.姓 And A.名 = B.名 And A.年龄 = B.年龄
Where A.名 = '三 '
------解决方案--------------------select * from t a
where 名 = '三 '
and 年龄 = (select min(年龄) from t where 姓 = a.姓 and 名 = a.名)