postgreSQL组合查询

postgreSQL组合查询
本文介绍postgreSQL中的组合查询,包括UNION用于合并两个查询结果并去除重复行;INTERSECT返回两个查询结果中的共有行;EXCEPT则返回第一个查询中有但第二个查询中没有的行。

postgreSQL组合查询官方文档
对查询结果进行组合 union,intersect,except。集合操作也可嵌套和级联。
UNION把query2的结果附加到query1 的结果上(不过我们不能保证这就是这些行实际的返回顺序),并且像DISTINCT 那样删除结果中所有重复的行(除非声明了UNION ALL)。
INTERSECT返回那些同时存在于query1 和query2结果中的行,除非声明了INTERSECT ALL, 否则所有重复行都被删除。
Except 返回在query1中,但是不在query2中的结果

### PostgreSQL 连接查询 #### 执行连接查询示例 为了展示如何在 PostgreSQL 中执行连接查询,考虑两个表 `employees` 和 `departments`。假设这两个表结构如下: - `employees`: 存储员工信息,字段包括 `id`, `name`, `department_id`. - `departments`: 學存部门信息,字段包括 `id`, `dept_name`. 要获取每位员工的名字及其所属部门名称,可以使用内连接(INNER JOIN)。以下是具体 SQL 查询语句[^1]: ```sql SELECT e.name, d.dept_name FROM employees AS e JOIN departments AS d ON e.department_id = d.id; ``` 此命令通过匹配 `employees` 表中的 `department_id` 字段与 `departments` 表里的 `id` 来组合两表数据。 #### 连接查询语法 一般而言,在 PostgreSQL 中创建连接查询遵循的标准语法形式为: ```sql SELECT column_list FROM table1 [AS] alias1 JOIN table2 [AS] alias2 ON join_condition; ``` 这里的关键部分有三个:指定参与联结的列 (`column_list`);定义待联结的数据源(`table1`,`table2`)以及它们各自的别名 (可选); 设置用于比较并决定哪些行应该被关联起来的具体条件(`join_condition`). 对于不同类型的连接方式——左外连(LEFT OUTER JOIN),右外连(RIGHT OUTER JOIN),全外连(FULL OUTER JOIN)—只需更改关键词即可适应不同的需求场景. #### 关键概念解释 - **范围表条目**(Range Table Entry,RTE): 在 PG 的上下文中,“range table”指的是由 SQL 语句所操作的对象集合,比如单个表、子查询的结果或是多个表之间的联合结果等。每一个这样的对象都会对应于一个 RTE 记录项。 - **JOIN**: 是一种用来基于某些共同属性来合并来自两个或更多表格的信息的操作符。它允许用户构建复杂的关系型数据库查询逻辑,从而实现跨多张表检索所需资料的目的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值