Sql — CTE公用表表达式和With用法总结
发布时间:2020-12-12 00:01:35 所属栏目:MySql教程 来源:网络整理
导读:p style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;" span style="font-family:'宋体';"CTE(Common Table Expression) 公用表表达式,它是在单个语句的执行范围内定义的临时结果集,只在查询期间有效。它可以自引用,也可在同一查询
<p style="font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;"> <p style="font-family:Verdana,sans-serif;font-size:14px;"> <span style="font-family:'宋体';">CTE最大的好处是提升T-Sql代码的可读性,可以更加优雅简洁的方式实现递归等复杂的查询。 <p style="font-family:Verdana,sans-serif;font-size:14px;"> <span style="font-family:'宋体';">CTE可用于:<span style="font-family:'宋体';"> ⒈ 创建递归查询,这个应该是CTE最好用的地方<span style="font-family:'宋体';"> ⒉ 在同一语句中多次引用生成的表<span style="font-family:'宋体';"> 3. 减少子查询和表变量,提高执行效率 <p style="font-family:Verdana,sans-serif;font-size:14px;"> <span style="font-family:'宋体';">CTE优点:<span style="font-family:'宋体';"> 1. 使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。同时,CTE要比表变量的效率高得多。<span style="font-family:'宋体';"> 2. 可以用来定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。<span style="font-family:'宋体';"> 3. 查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,直到生成最终结果集。 <p style="font-family:Verdana,sans-serif;font-size:14px;"> <span style="font-family:'宋体';">下面是CTE的语法: <div class="cnblogs_code" style="border:1px solid rgb(204,204,204);overflow:auto;font-family:'Courier New' !important;"> <pre style="font-family:'Courier New' !important;"><span style="line-height:1.5 !important;">WITH cte_name ( column_name [,...n] ) AS ( CTE_query_definition –- Anchor member <span style="color:rgb(0,255);line-height:1.5 !important;">is<span style="line-height:1.5 !important;"> defined. )
使用示例 = and parentid = * cte;
= and parentid (,,128);line-height:1.5 !important;">23,128);line-height:1.5 !important;">25,128);line-height:1.5 !important;">26= c.CategoryID Status= p.ProductId,p.ProductName,c.CategoryID,c.CategoryName,c.CategoryLevel =c.CategoryID
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |