评论

收藏

[MySQL] 实战 SQL:实现百度、高德等地图中的地铁换乘线路查询

数据库 数据库 发布于:2021-11-15 13:15 | 阅读数:611 | 评论:0

对于大多数人来说,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。
DSC0000.png
DSC0001.png
DSC0002.jpg
关注下面的标签,发现更多相似文章