一、创建测试数据
CREATE TABLE LFINJI_A(ID NUMBER PRIMARY KEY, NAME VARCHAR2(20), ATYPE VARCHAR2(1));
CREATE TABLE LFINJI_B(ID NUMBER PRIMARY KEY, NAME VARCHAR2(20), BTYPE VARCHAR2(1));
INSERT INTO LFINJI_A VALUES (1,'AA' ,'1');
INSERT INTO LFINJI_A VALUES (2,'AB' ,'1');
INSERT INTO LFINJI_A VALUES (3,'AC' ,'0');
INSERT INTO LFINJI_A VALUES (4,'AD' ,'1');
INSERT INTO LFINJI_A VALUES (5,'AE' ,'0');
COMMIT;
INSERT INTO LFINJI_B VALUES (1,'BA' ,'1');
INSERT INTO LFINJI_B VALUES (2,'BB' ,'1');
INSERT INTO LFINJI_B VALUES (3,'BC' ,'1');
INSERT INTO LFINJI_B VALUES (5,'BD' ,'0');
INSERT INTO LFINJI_B VALUES (6,'BE' ,'1');
COMMIT;
二、左外连接
左外关联是获取左表全部结果集,以ON中的条件为限制,满足条件返回结果,不满足条件右表返回值填充为NULL。
SELECT A.ID, A.NAME, B.NAME FROM TEST_A A LEFT JOIN TEST_B B ON A.ATYPE = '1' AND A.ID = B.ID ;
结果集:
三、内连接
内连接只取满足条件的结果集相交部分。
SELECT A.ID, A.NAME, B.NAME FROM LFINJI_A A INNER JOIN LFINJI_B B ON A.ATYPE = '1' AND A.ID = B.ID ;
结果集:
另:不完全的左外连接
如果把过滤条件放在WHERE部分,并不算完全的左外连接,左表满足WHERE条件的会获取,右表不满足条件的会填充为NULL。
SELECT A.ID, A.NAME, B.NAME FROM LFINJI_A A LEFT JOIN LFINJI_B B ON A.ID = B.ID WHERE A.ATYPE = '1';
结果集: