1.关于oracle多表联合查询的语句如何写
我给你写一个,保证能用,验证能用的话请采纳!!!
select all_.bh,all_.name,a.sl,b.sl1,c.sl2,c.sl3 from
(
select bh,name from a
union
select bh,name from b
union
select bh,name from c
) all_
left outer join a on all_.bh = a.bh and all_.name = a.name
left outer join b on all_.bh = b.bh and all_.name = b.name
left outer join c on all_.bh = c.bh and all_.name = c.name
2.求教oracle两个表联合查询的sql语句
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;】即可。
---
以上,希望对你有所帮助。
3.求教oracle两个表联合查询的sql语句
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;】即可。
---以上,希望对你有所帮助。
4.两个数据库的表,怎么联合查询
SELECT dbo.student.ID, dbo.student.Name, dbo.student.Num, dbo.teacher.Name AS Expr1
FROM dbo.student INNER JOIN
dbo.teacher ON dbo.student.ID = dbo.teacher.ID
dbo.teacher.Name AS Expr1 这个Expr1 就是两个表重复的字段不过dbo.teacher里面的Name用Expr1 代替了
5.oracle 多表联合查询
select qymc,swdjzh,gsdjzh,zchjm,fzhjm,syyhm,yjsjm,zysrl,qtlrl,lrzel,dfczel,zrs from
(select zzjgdm,qymc,swdjzh,gsdjzh from tb_qyxx) t1,
(
select a.zzjgdm,zchjm,fzhjm,syyhm,yjsjm from tb_zcfzxx a,
(select zzjgdm,max(nd)n,max(yd)y from tb_zcfzxx group by zzjgdm )b
where z.zzjgdm = b.zzjgdm and a.nd = b.n and a.yd = b.y
)t2,
(
select c.zzjgdm,zysrl,qtlrl,lrzel,dfczel from tb_lrxx c,
(select zzjgdm,max(nd)n,max(yd)y from tb_lrxx group by zzjgdm )d
where d.zzjgdm = c.zzjgdm and c.nd = d.n and c.yd = d.y
) t3,
(
select e.zzjgdm,zrs from tb_qyrcqk e,
(select zzjgdm,max(nd)n,max(yd)y from tb_qyrcqk group by zzjgdm )f
where e.zzjgdm = f.zzjgdm and e.nd = f.n and e.yd = f.y
) t4
where t1.zzjgdm = t2.zzjgdm and t2.zzjgdm = t3.zzjgdm and t3.zzjgdm = t4.zzjgdm
把条件改为:
where t1.zzjgdm = t2.zzjgdm(+) and t1.zzjgdm= t3.zzjgdm(+) and t1.zzjgdm = t4.zzjgdm(+)
谢谢下面这位仁兄的提醒,确实写反了
就能达到你的要求
6.oracle怎么使用关系表进行联合查询
Oracle数据库表的联合查询包括交叉联合、等值联合和不等值联合、内部联合与外部联合:1、交叉联合: 使你对于“联合”的概念开始产生最直观的印象,因为交叉联合的结果就是两个表的笛卡尔积。
code example:select * from T1, T2; 假如表1有2条记录,表2有3条记录,那么查询结果就是2*3=6条记录。2、等值联合与不等值联合: 等值联合:只显示表1中的数据,以及表2中的、存在于表1中的数据。
顾名思义,查询条件/表达式中以等号(“=”)连接。 code example: 1 select T1.sectionA, T1.sectionB, T2.sectionC from T1, T2 2 whereT1.sectionA =T2.sectionA (and 。
); 不等值联合:与等值联合查询类似,只不过在where子句中使用除等号以外的比较符连接,此处不以例详述。3、内部联合与外部联合 内部联合:产生的结果行数取决于参加联合的行数,也就是说内部联合的行数取决于 WHERE 子句的结果。
code example: 1 SELECT P.PARTNUM, P.DESCRIPTION, P.PRICE, O.NAME, O.PARTNUM 2 FROM PART P JOINORDERS OONORDERS.PARTNUM =54; 在这里你使用的语法中的 JOIN ON 不是 ANSI 标准中所指定的,而是我们所使用的解释器的附加语法,你可以用它来指明是内部联合还是外部联合,大多数解释器对些都进行了类似的扩充,注意这种类型的联合没有 WHERE 子句。4、表的自我联合: 由于联合查询也常被译为“连接”,因此在有些资料中看到的“自连接”查询指的也是这个概念。
它并无特别之处,是指表1与表2均为同一表名。其用处在于检查表中数据的一致性。
比如T1表中两条记录的sectionA字段是同值的,这可能是由于数据录入错误造成的,如果按正常数据使用它,可能造成不可预料的灾难。 code example: 1 SELECT F.PARTNUM, F.DESCRIPTION, S.PARTNUM, S.DESCRIPTION 2 FROM PART F, PART S 3 WHEREF.PARTNUM =S.PARTNUM 4 AND F.DESCRIPTION<> S.DESCRIPTION 如果不存在上述异常数据,那么查询结果应该为空;否则1条异常记录对应两条查询结果。
可以此来检查数据的一致性。
7.如何将两个查询结果做为两张表进行联合查询
SELECT orgid,orgname,COUNT(*) CNT FROM(SELECT orgid,orgname FROM t1 UNION ALL SELECT orgid,orgname FROM t2 )GROUP BY orgid,orgname;或SELECT orgid,orgname,sum(cn) CNT FROM(SELECT orgid,orgname,count(*) cn FROM t1 group by orgid,orgname UNION ALL SELECT orgid,orgname,count(*) cn FROM t2 group by orgid,orgname)GROUP BY orgid,orgname;。
转载请注明出处育才学习网 » oracle俩张表的联合查询怎么写