实战 SQL:实现百度、高德等地图中的地铁换乘线路查询
对于大多数人来说,SQL 意味着 SELECT、INSERT、UPDATE 和 DELETE。但实际上,SQL 能够实现的功能远远不止简单的增删改查。今天我们来介绍一个高级功能:通用表表达式(Common Table Expression)。CTE 可以提高复杂查询的性能和可读性,实现树状结构或者图数据的遍历。例如:[*]生成数字序列;
[*]获取员工上下级的组织关系;
[*]查询地铁、航班换乘线路;
[*]社交网络图谱分析。
一般来说,我们只能通过应用程序或者存储过程实现这些复杂的功能,而且性能不高。但是有了 CTE,我们可以直接利用一个 SQL 语句完成以上功能。CTE 不仅强大而且通用,各种主流数据库都提供了支持。
通用表表达式MySQLOracleSQL ServerPostgreSQLSQLite简单 CTE✔️✔️✔️✔️✔️递归 CTE✔️✔️✔️✔️✔️我们通过几个实用案例,了解一下 CTE 的语法,同时介绍各种数据库中的实现差异。
简单 CTE
通用表表达式使用WITH关键字表示:
t(n) AS (
SELECT 4 ---- Oracle
)
SELECT * FROM t;
n|
-|
4|以上 WITH 子句相当于定义了一个语句级别的临时表 t(n),在随后的 SELECT、INSERT、UPDATE 以及 DELETE 语句中都可以使用。如果是 Oracle,可以使用SELECT 2 FROM dual。
页:
[1]