oracle全连接处理连接字段显示不全问题

现有oracle表 A                                 表B

ID  COLA                       ID   COLB

1       1                          2       4

2       2                          3       5

3       3                          4       6

对表A和表B全连接FULL JOIN 操作 SQL1:SELECT T.ID,COLA,COLB FROM (SELECT * FROM A) T FULL JOIN (SELECT * FROM B) R ON T.ID=R.ID

结果是  ID   COLA   COLB

1       1

2       2         4

3       3         5

6                 由于SQL1里选择的是T.ID(就是A的ID),因此全连接后连接字段只会显示A的ID,而B的ID是null

同理如果选择R.ID(就是B的ID)结果如下 A的ID就是null  SQL2:SELECT R.ID,COLA,COLB FROM (SELECT * FROM A) T FULL JOIN (SELECT * FROM B) R ON T.ID=R.ID

ID   COLA   COLB

1

2       2         4

3       3         5

4                  6

对结果表处理下即可 SQL3 :   SELECT A||B AS ID,COLA,COLB FROM (SELECT T.ID AS A,R.ID AS B,COLA,COLB FROM (SELECT * FROM A) T FULL JOIN (SELECT * FROM B) R ON T.ID=R.ID) WHERE A IS NULL OR B IS NULL    UNION ALL  SELECT A AS ID,COLA,COLB FROM (SELECT T.ID AS A,R.ID AS B,COLA,COLB FROM (SELECT * FROM A) T FULL JOIN (SELECT * FROM B) R ON T.ID=R.ID) WHERE A IS NOT NULL AND B IS NOT NULL

得到将表A 表B 里的ID取别名 A B ,然后把AB列融合成1列ID,即AB同时不为空的那么取其中一个即可,union 上AB有一个为空的,取A||B即可

A      B   COLA   COLB

1               1

2      2       2         4

3      3       3         5

4                  6

最后得到

ID    COLA   COLB

1       1

2       2        4

3       3        5

4                 6

时间: 2024-11-03 23:08:07

oracle全连接处理连接字段显示不全问题的相关文章

Oracle左连接、右连接、全外连接以及(+)号用法(转)

Oracle  外连接(OUTER JOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUTER JOIN. 通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN. 在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容. 如果A表的数据在B表中没有记录. 那么在相关联的结果集行中列显示为空值(NULL). 对于外连接, 也可以使用“(+)

Oracle左连接、右连接、全外连接以及(+)号用法

阅读目录 1.准备工作 2.左外连接(LEFT OUTER JOIN/ LEFT JOIN) 3.右外连接(RIGHT OUTER JOIN/RIGHT JOIN) 4.全外连接(FULL OUTER JOIN/FULL JOIN) 1.准备工作 Oracle  外连接(OUTER JOIN)包括以下: 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUTER JOIN. 通常省略OUTER关键字, 写成:

Oracle 左连接、右连接、全外连接、(+)号作用 (转载)

Oracle  外连接 (1)左外连接 (左边的表不加限制)       (2)右外连接(右边的表不加限制)       (3)全外连接(左右两表都不加限制) 外连接(Outer Join) outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行.它还返回任何在第二个输入中没有匹配行的第一个输入中的行.外连接分为三种: 左外连接,右外连接,全外连接. 对应SQL:LEFT/RIGHT/FULL OUTER JOIN. 通常我们省略outer 这个关键字. 写成:LE

Oracle 左连接、右连接、全外连接、(+)号作用

Oracle  外连接 (1)左外连接 (左边的表不加限制)       (2)右外连接(右边的表不加限制)       (3)全外连接(左右两表都不加限制) 外连接(Outer Join) outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行.它还返回任何在第二个输入中没有匹配行的第一个输入中的行.外连接分为三种: 左外连接,右外连接,全外连接. 对应SQL:LEFT/RIGHT/FULL OUTER JOIN. 通常我们省略outer 这个关键字. 写成:LE

[转载]Oracle左连接、右连接、全外连接以及(+)号用法

Oracle  外连接(OUTER JOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUTER JOIN. 通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN. 在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容. 如果A表的数据在B表中没有记录. 那么在相关联的结果集行中列显示为空值(NULL). 对于外连接, 也可以使用"(+)

四.Oracle聚合函数和内外全连接

1.聚合函数 同时对一组数据行进行操作,对每组行返回一行输出结果,叫做分组函数.(将多行数据分成一行或多行,每组行只返回一行结果) 1.1聚合函数不能出现在where字句中 1.2常用的聚合函数: count: 表示返回满足条件的总行数,(注:建议用rowid统计总行数,因为它代表唯一的物理地址,或者用唯一标识符(主键);) 使用 * 效率慢,因为它先会去select * from all_tab_cols(字典表)去搜索表有那些列,然后再去分析那个列查询速度更快 例:select count(

Oracle表与表之间的连接方式(内连接:inner join 、外连接 全连接: full outer join、左连接:left outer join 、右连接:right outer join、自然连接:natural join)

1 --内连接:INNER JOIN 它表示返回两个表或记录集连接字段的匹配记录,表示两个表中相互包含的部分 2 select * from student inner join sc on student.sno=sc.sno; 3 --外连接(全连接):包含左.右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行.不符合条件的,以空值代替. 4 --全连接:表示两个表组合在一起,左右不相匹配时使用空值替换 5 select * from student full outer join

oracle 内连接(inner join)、外连接(outer join)、全连接(full join)

转自:https://premier9527.iteye.com/blog/1659689 建表语句: create table EMPLOYEE(EID NUMBER,DEPTID NUMBER,ENAME VARCHAR2(200)) create table DEPT(DEPTID NUMBER,DEPTNAME VARCHAR2(200)) oracle中的连接可分为,内连接(inner join).外连接(outer join).全连接(full join),不光是Oracle,其他很

oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题

一个数据表基本上很难满足我们的查询要求,同时,将所有的数据都保存在一个表格中显然也不是一种好的数据库设计,为了避免数据的冗余,删除.更新异常,我们通常需要建立一张外键表,通过表连接,来获取我们自己想要得到的数据,所以在数据查找中,表连接是一个经常使用到的操作,下面我们来看看两个或者几个表有哪些方式是可以连接的. 经常遇到的问题:我们或许在表连接的过程中用于连接的另外一张表数据为空,导致某些数据得不到.我们要怎么解决呢????? 我们就先从介绍表连接的方式开始,在介绍的过程中,就会得到解决. 假如