在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;
运行结果: