学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

[求助]请教一个关于oracle的sql问题

[求助]请教一个关于oracle的sql问题

在oracle的一张表里有四个字段:姓名,出生年月,发表文章名,发表文章号(假设为两位,按01-10的顺序自动生成).
每个人可能发表多篇文章;请问有什么样的sql可以将每个人最后一次发表文章的所有记录同时输出?
如下表:

姓名

出生年月

发表文章名

发表文章号

a

2000-01

a 发表文章名1

01

a

2000-01

a 发表文章名2

02

a

2000-01

a 发表文章名3

03

b

2001-01

b发表文章名1

01

b

2001-01

b 发表文章名2

02

c

2002-01

c 发表文章名1

01

c

2002-01

c 发表文章名2

02


实现输出结果:
姓名 出生年月 发表文章名 发表文章号

a 2000-01 a 发表文章名3 03
b 2001-01 b 发表文章名2 02
c 2002-01 c 发表文章名2 02

请问这个select语句该怎么写吗?谢谢!

[此贴子已经被作者于2007-5-13 10:38:48编辑过]

TOP

select * from 表名 where 姓名="a" and 发表文章号 in (select max(发表文章号) from 表名 where 姓名="a")
or 姓名="b" and 发表文章号 in (select max(发表文章号) from 表名 where 姓名="b")
or 姓名="c" and 发表文章号 in (select max(发表文章号) from 表名 where 姓名="c");

TOP

谢谢你的解答
但是你的回答不实用
比如:对于一个四千人的库那我的select那岂不是要写很长。

TOP

select * from 表名 where 发表文章号 in (select max(发表文章号) from 表名 where in (select distanct 姓名 from 表名))


这个你试试的吧

TOP

select 姓名,max(出生年月) as 出生年月 ,max(发表文章名) as 发表文章名,max(发表文章号) as 发表文章号 from 表明 group by 姓名

这样应该就可以了吧

TOP

不好意思
这几天忙,没能上来。
我的问题,有点特殊,你们说的都不合用。
谢谢你们的解答!
结贴。

TOP

发新话题