求教oracle两个表联合查询的sql语句

求教oracle两个表联合查询的sql语句两个表,主从表为一对多的关系,即,从表中有一条或多条记录同主表匹配;现在我想只显示从表中同主表匹配的第一条记录(指定从表排序方式... 求教oracle两个表联合查询的sql语句

两个表,主从表为一对多的关系,即,从表中有一条或多条记录同主表匹配;现在我想只显示从表中同主表匹配的第一条记录(指定从表排序方式),请问查询的SQL语句?
例如:
表一为:
姓名编号 姓名
1 N1
2 N2
3 N3
4 N4
=====
表二为
姓名编号 考试科目 成绩
N1 语文 99
N1 数学 90
N1 历史 80
N2 语文 99
N2 地理 90
N3 语文 80
N4 语文 88
————————————————————
查询结果

姓名编号 姓名 科目 成绩
1 N1 语文 99
2 N2 语文 99
3 N3 语文 80
4 N4 语文 88
展开
 我来答
奔驰M888
2009-06-13 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1846
采纳率:0%
帮助的人:2698万
展开全部
select * from
(select a.姓名编号,a.姓名,b.考试科目 as 科目,b.成绩,row_number()over(partition by a.姓名 order by b.成绩 desc) as id from 表一 a,表二 b where a.姓名=b.姓名)
where id = 1;

说明:
1、上面的sql是按照成绩降序排列后取出每个姓名的第一条记录,如果想换成升序把【order by b.成绩 desc】改成【order by b.成绩】即可。
2、如果想取第二条记录把【where id = 1;】改成【where id = 2;】即可。
3、如果想去前n条把【where id = 1;】改成【where id <=n;】即可。

---
以上,希望对你有所帮助。
badkano
2009-06-13 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885365
团长

向TA提问 私信TA
展开全部
select a.姓名编号,a.姓名,b.科目,b.成绩 from 表一 b,表二 c,
(select min(a.rownum),a.姓名编号 from
(select rownum,姓名编号,考试科目,成绩 from 表二) a) d
where b.姓名=c.姓名编号
and b.姓名=c.姓名编号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式