在PostgreSQL中,有以下類型的連接:
- 內連接(INNER JOIN)
- 左外連接(LEFT OUTER JOIN)
- 右外連接(RIGHT OUTER JOIN)
- 全連接(FULL OUTER JOIN)
- 跨連接(CROSS JOIN)
1、內連接
PostgreSQL內部連接也被稱為連接或簡單連接。 這是最常見的連接類型。 此連接返回滿足連接條件的多個表中的所有行。
語法:
SELECT table1.columns, table2.columns FROM table1 INNER JOIN table2 ON table1.common_filed = table2.common_field;
實例:
SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT FROM EMPLOYEES INNER JOIN DEPARTMENT ON EMPLOYEES.ID = DEPARTMENT.ID;
2、左外連接
左外連接返回從“ON
”條件中指定的左側表中的所有行,只返回滿足條件的另一個表中的行。
語法:
SELECT table1.columns, table2.columns FROM table1 LEFT OUTER JOIN table2 ON table1.common_filed = table2.common_field;
實例:
SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT FROM EMPLOYEES LEFT OUTER JOIN DEPARTMENT ON EMPLOYEES.ID = DEPARTMENT.ID;
輸出結果:
3、右外連接
右外連接返回從“ON
”條件中指定的右側表中的所有行,只返回滿足條件的另一個表中的行。
語法:
SELECT table1.columns, table2.columns FROM table1 RIGHT OUTER JOIN table2 ON table1.common_filed = table2.common_field;
實例:
SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT FROM EMPLOYEES RIGHT OUTER JOIN DEPARTMENT ON EMPLOYEES.ID = DEPARTMENT.ID;
執行結果:
4、全外連接
全外連接從左表和左表中返回所有行。
語法:
SELECT table1.columns, table2.columns FROM table1 FULL OUTER JOIN table2 ON table1.common_filed = table2.common_field;
實例:
SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT FROM EMPLOYEES FULL OUTER JOIN DEPARTMENT ON EMPLOYEES.ID = DEPARTMENT.ID;
執行結果:
5、交叉連接
PostgreSQL跨連接(CROSS JOIN
)將第一個表的每一行與第二個表的每一行相匹配。 它也被稱為笛卡爾積。
語法:
SELECT coloums FROM table1 CROSS JOIN table2
實例:
SELECT NAME, DEPT FROM EMPLOYEES CROSS JOIN DEPARTMENT;
運行結果: