首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

一个查询有关问题

2012-01-13 
一个查询问题表:孩子id年龄姓名11李三****22李四31王四42王五53王靠64王三****75王三查询:名叫“三”的,各个

一个查询问题
表:   孩子
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.名)

热点排行
Bad Request.