您好,登錄后才能下訂單哦!
這篇文章主要介紹“JOIN怎么顯示來自多個表的數據”,在日常操作中,相信很多人在JOIN怎么顯示來自多個表的數據問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JOIN怎么顯示來自多個表的數據”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
SELECT 字段列表
FROM TABLE1
[CROSS JOIN TABLE2 ] |
[NATURAL JOIN TABLE2 ] |
[JOIN TABLE2 USING (字段名) ] |
[JOIN TABLE2 ON (TABLE.COLUMN_NAME = TABLE2.COLUMN_NAME) ] |
[(LEFT | RIGHT | FULL OUT) JOIN TABLE2 ON (TABLE1.COLUMN_NAME = TABLE2.COLUMN_NAME) ];
1、USING
如果不希望參照被連接表的所有同名列進行等值連接,自然連接將無法滿足要求,可以在連接時使用USING子句來設置用于等值連接的列(參照列)名。
不允許在參照列上使用表名或者別名作為前綴
--99語法
SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME
FROM EMP
JOIN DEPT
USING (DEPTNO);
--92語法
SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;
2、ON
如果要參照非同名的列進行等值連接,或想設置任意的連接條件,可以使用On子句
SELECT EMPNO, ENAME, SAL, EMP.DEPTNO, DNAME
FROM EMP
JOIN DEPT
ON (EMP.DEPTNO = DEPT.DEPTNO);
自己和自己做鏈接
--99語法
SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGR
FROM EMPLOYEES WORKER
JOIN EMPLOYEES MANAGER
ON (WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID);
--92語法
SELECT WORKER.LAST_NAME EMP, MANAGER.LAST_NAME MGR
FROM EMPLOYEES WORKER, EMPLOYEES MANAGER
WHERE WORKER.MANAGER_ID = MANAGER.EMPLOYEE_ID;
--99語法
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVEL
FROM EMPLOYEES E
JOIN JOB_GRADES J
ON E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;
--92語法
SELECT E.LAST_NAME, E.SALARY, J.GRADE_LEVEL
FROM EMPLOYEES E, JOB_GRADES J
WHERE E.SALARY BETWEEN J.LOWEST_SAL AND J.HIGHEST_SAL;
1、INNER 連接
兩個表連接,只返回匹配的行,被稱為內連接。
--查詢所有員工以及其部門名字
--99語法
SELECT LAST_NAME, DEPARTMENT_NAME
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
--92語法
SELECT LAST_NAME, DEPARTMENT_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID;
2、LEFT OUTER | RIGHT OUTER 連接
兩個表在連接過程中除了返回滿足連接條件的行以外還返回左(或右)表中不滿足條件的行,這種連接稱為左(或右)外連接。
--哪些部門沒有員工,看出部門名字
--99語法
SELECT DEPARTMENT_NAME
FROM EMPLOYEES E
RIGHT JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
WHERE LAST_NAME IS NULL;
--92語法
SELECT DEPARTMENT_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID
AND LAST_NAME IS NULL;
3、FULL OUTER 連接
兩個表在連接過程中除了返回滿足連接條件的行以外還返回兩個表中不滿足條件的行,這種連接稱為全外聯接。
--99
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM EMPLOYEES E
FULL OUTER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID;
--92
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM EMPLOYEES E, DEPARTMENTS D
ON E.DEPARTMENT_ID(+) = D.DEPARTMENT_ID(+);
笛卡爾集會在下面條件下產生:
1、連接條件被遺漏
2、連接條件不正確
3、所有表中的所有行互相連接
--99語法
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM EMPLOYEES E
CROSS JOIN DEPARTMENTS D;
--92語法
SELECT E.LAST_NAME, D.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM EMPLOYEES E, DEPARTMENTS D;
到此,關于“JOIN怎么顯示來自多個表的數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。