更新时间:2025-04-02 GMT+08:00
复用子查询
功能描述
在执行select查询语句时,通过对同一子查询的结果进行缓存,并在查询的不同部分重复使用,避免重复计算相同的子查询,从而提高查询性能。
语法格式
1 2 3 4 5 6 7 8 |
WITH cte_name AS ( SELECT ... FROM table_name WHERE ... ) SELECT ... FROM cte_name WHERE ... |
关键字
参数 |
描述 |
---|---|
cte_name |
用户自定义的子查询名称。 |
table_name |
执行子查询命令的表的名称。 |
示例
- 示例1:基于表sales定义子查询sales_data,查询销售金额大于100的商品,最后查询该子查询的所有数据。
1 2 3 4 5 6
WITH sales_data AS ( SELECT product_name, sales_amount FROM sales WHERE sales_amount > 100 ) SELECT * FROM sales_data;
- 示例2:基于表sales定义子查询sales_data1和sales_data1,其中sales_data1查询销售金额大于100的商品;sales_data2查询销售金额小于20的商品;最后合并两个子查询的数据。
1 2 3 4 5 6 7 8 9 10 11 12 13
WITH sales_data1 AS ( SELECT product_name, sales_amount FROM sales WHERE sales_amount > 100 ), sales_data2 AS ( SELECT product_name, sales_amount FROM sales WHERE sales_amount < 20 ) SELECT * FROM sales_data1 UNION ALL SELECT * FROM sales_data2;
父主题: 数据相关