select * from a,b where a.c0(+)=b.c1 <====>select * from a left join b on a.c0=b.c1 select * from a,b where a.c0=(+)b.c1 <====>select * from a right join b on a.c0=b.c1 select * from a,b where a.c0=b.c1 <====>select * from a inner join b on a.c0=b.c1
Oracle 特有表之间外连接方法。
and a.cancel_flag(+) ='0' 表示 and a.cancel_flag为0的取出来置为0,不为0的也取出来置为空。这是左外连接的最通俗的理解。
右外连接 right outer join 或者 right join 右外连接是在等值连接的基础上加上被连接表的不匹配数据 SELECT * FROM TESTA RIGHT OUTER JOIN TESTB ON TESTA.A=TESTB.AOracle支持的另一种写法 SELECT * FROM TESTA,TESTB WHERE TESTA.A(+)=TESTB.A
给个例子,容易理解点,引用别人的实例: [TEST@ORA1] SQL>select * from alink; 编号 姓名---- ---------- 1000 张三 2000 李四 3000 王五 [TEST@ORA1] SQL>select * from blink; 编号 商品---- ---------- 1000 电视机 2000 录像机 4000 自行车 [TEST@ORA1] SQL>set null 空值--这里为了显示方面我把NULL定义成了[空值] [TEST@ORA1] SQL>select a.*,b.* from alink inner join blink on a.编号=b.编号;--内链接 编号 姓名 编号 商品1000 张三 1000 电视机 2000 李四 2000 录像机 [TEST@ORA1] SQL>select a.*,b.* from alink left join blink on a.编号=b.编号;---左链接 --相当于select a.*,b.* from alink,blink where a.编号=b.编号(+) 编号 姓名 编号 商品---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 [TEST@ORA1] SQL>select a.*,b.* from alink right join blink on a.编号=b.编号;--右链接 --相当于select a.*,b.* from alink,blink where a.编号(+)=b.编号 编号 姓名 编号 商品---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 空值 空值 4000 自行车 [TEST@ORA1] SQL>select a.*,b.* from alink full join blink on a.编号=b.编号;--全链接 编号 姓名 编号 商品---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 空值 空值 4000 自行车---以上,希望对你有所帮助。提问者评价明白点了, 谢谢
ISSU_TIME 发卡时间 b表是卡主表
CURR_VALID_DATE 当前有效期
CANCEL_FLAG 取消标志
<====>select * from a left join b on a.c0=b.c1
select * from a,b where a.c0=(+)b.c1
<====>select * from a right join b on a.c0=b.c1
select * from a,b where a.c0=b.c1
<====>select * from a inner join b on a.c0=b.c1
右外连接是在等值连接的基础上加上被连接表的不匹配数据
SELECT *
FROM TESTA
RIGHT OUTER JOIN TESTB
ON TESTA.A=TESTB.AOracle支持的另一种写法
SELECT *
FROM TESTA,TESTB
WHERE TESTA.A(+)=TESTB.A
[TEST@ORA1] SQL>select * from alink;
编号 姓名---- ----------
1000 张三
2000 李四
3000 王五
[TEST@ORA1] SQL>select * from blink;
编号 商品---- ----------
1000 电视机
2000 录像机
4000 自行车
[TEST@ORA1] SQL>set null 空值--这里为了显示方面我把NULL定义成了[空值]
[TEST@ORA1] SQL>select a.*,b.* from alink inner join blink on a.编号=b.编号;--内链接
编号 姓名 编号 商品1000 张三 1000 电视机
2000 李四 2000 录像机
[TEST@ORA1] SQL>select a.*,b.* from alink left join blink on a.编号=b.编号;---左链接
--相当于select a.*,b.* from alink,blink where a.编号=b.编号(+)
编号 姓名 编号 商品---- ---------- ---- ----------
1000 张三 1000 电视机
2000 李四 2000 录像机
3000 王五 空值 空值
[TEST@ORA1] SQL>select a.*,b.* from alink right join blink on a.编号=b.编号;--右链接
--相当于select a.*,b.* from alink,blink where a.编号(+)=b.编号
编号 姓名 编号 商品---- ---------- ---- ----------
1000 张三 1000 电视机
2000 李四 2000 录像机
空值 空值 4000 自行车
[TEST@ORA1] SQL>select a.*,b.* from alink full join blink on a.编号=b.编号;--全链接
编号 姓名 编号 商品---- ---------- ---- ----------
1000 张三 1000 电视机
2000 李四 2000 录像机
3000 王五 空值 空值
空值 空值 4000 自行车---以上,希望对你有所帮助。提问者评价明白点了, 谢谢