注册 登录
编程论坛 Oracle论坛

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

北极光 发布于 2007-05-13 10:21, 1597 次点击
在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编辑过]

5 回复
#2
solo2142007-05-13 22:09
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");
#3
北极光2007-05-15 08:14
谢谢你的解答
但是你的回答不实用
比如:对于一个四千人的库那我的select那岂不是要写很长。
#4
solo2142007-05-15 09:38
select * from 表名 where 发表文章号 in (select max(发表文章号) from 表名 where in (select distanct 姓名 from 表名))


这个你试试的吧
#5
心中有剑2007-05-18 14:05
select 姓名,max(出生年月) as 出生年月 ,max(发表文章名) as 发表文章名,max(发表文章号) as 发表文章号 from 表明 group by 姓名

这样应该就可以了吧
#6
北极光2007-05-24 10:19

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

1