求教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 展开
两个表,主从表为一对多的关系,即,从表中有一条或多条记录同主表匹配;现在我想只显示从表中同主表匹配的第一条记录(指定从表排序方式),请问查询的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 展开
2个回答
展开全部
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;】即可。
---
以上,希望对你有所帮助。
(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;】即可。
---
以上,希望对你有所帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询