求个sql语句.

igelf 2008-03-12 10:52:42
举个例子 下列数据
name age
a1 18
a1 16
a1 17
a3 19
a4 20
我要取出
name age
a1 18
a3 19
a4 20
怎么写啊.
...全文
274 点赞 收藏 35
写回复
35 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lucky 2008-03-13
[Quote=引用 25 楼 igelf 的回复:]
引用 23 楼 zhuyx808 的回复:
SQL code

select a.* from 表 a where age = (select top 1 age from 表 where name = a.name) order by a.name


小梁对了的

可是如果top 1 的age 和下一个的age相同的话,取出的是二行啊.name会重复的.
[/Quote]
用个distinct 不就可以啦
回复
lantu007 2008-03-13
楼上正确
select distinct name,age from tb
回复
igelf 2008-03-12
想到了.用小梁的方法.表中加个自增id,就不重复了.
回复
LeeeeSin 2008-03-12
[Quote=引用 27 楼 csharpvb 的回复:]
举个例子 下列数据
name age
a1 18
a1 16
a1 17
a3 19
a4 20
我要取出
name age
a1 18
a3 19
a4 20
怎么写啊.
-----------
select * from table where age> 17
[/Quote]

查询的时候怎么可能会知道你查出数据的值是多少呢????
回复
igelf 2008-03-12
说明下,我实际要取的是很多列的数据.不单单是这两列.
回复
LeeeeSin 2008-03-12
顶上去
回复
win7cc 2008-03-12
举个例子 下列数据
name age
a1 18
a1 16
a1 17
a3 19
a4 20
我要取出
name age
a1 18
a3 19
a4 20
怎么写啊.
-----------
select * from table where age>17
回复
igelf 2008-03-12
比如下面数据.
name age
a1 18
a1 18
a1 17
a3 19
a4 20
将取出
name age
a1 18
a1 18
a3 19
a4 20
回复
igelf 2008-03-12
[Quote=引用 23 楼 zhuyx808 的回复:]
SQL code

select a.* from 表 a where age = (select top 1 age from 表 where name = a.name) order by a.name






小梁对了的
[/Quote]
可是如果top 1 的age 和下一个的age相同的话,取出的是二行啊.name会重复的.
回复
pt1314917 2008-03-12
吼``
回复
zhuyx808 2008-03-12


select a.* from 表 a where age = (select top 1 age from 表 where name = a.name) order by a.name




小梁对了的
回复
一品梅 2008-03-12
[Quote=引用 20 楼 dawugui 的回复:]
既然这样,不用用三楼小梁子转我的帖.
[/Quote]
呵呵,葵花宝典,武林至尊,天下无敌,谁与争峰~
回复
一品梅 2008-03-12
[Quote=引用 12 楼 igelf 的回复:]
我要取重复name的第一个
[/Quote]
select dinstinct name,age from tb;
回复
dawugui 2008-03-12
既然这样,不用用三楼小梁子转我的帖.
回复
LeeeeSin 2008-03-12
OK?????
回复
igelf 2008-03-12
恩.15楼理解我意思了
回复
lhsxsh 2008-03-12
select name,max(age) age
from tb
group by name
回复
igelf 2008-03-12
再打个比方吧.
name email
a1 a@163.com
a1 b@163.com
a2 c@163.com

我要取出
name email
a1 a@163.com
a2 c@163.com
明白?
回复
liangCK 2008-03-12
--三、按name分组取第一次出现的行所在的数据。
select a.* from tb a where val = (select top 1 val from tb where name = a.name) order by a.name
回复
yinqi025 2008-03-12

declare @t table(
name varchar(50),
age int
)

insert into @t
select 'a1',18
union all
select 'a1',16
union all
select 'a1',12
union all
select 'a2',19
union all
select 'a3',20

select a.[name],max(age) as age
from @t a
group by [name]
回复
加载更多回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-12 10:52
社区公告
暂无公告