You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite如何将关联子查询语句改写为CTE(公用表表达式)实现

SQL子查询改写CTE实现方案

你提供的SQL可以直接将FROM后的子查询逻辑抽成CTE,关联逻辑不需要做任何调整,改写后的完整代码如下:

WITH customer_total_avg AS (
    SELECT customer_id, AVG(total) AS total_avg
    FROM invoice
    GROUP BY customer_id
)
SELECT 
    c.last_name, 
    c.first_name, 
    ct.total_avg
FROM customer AS c
JOIN customer_total_avg AS ct
  ON c.customer_id = ct.customer_id;

改写说明

  • 用WITH关键字定义名为customer_total_avg的CTE临时结果集,内部逻辑和原语句中的子查询完全一致,保留了按客户ID分组计算平均消费的规则
  • 主查询直接将CTE作为普通表和customer表做内连接,关联条件和原写法完全相同,执行效率和原写法基本一致,CTE的优势是逻辑拆分更清晰,适合多层嵌套的复杂查询场景

内容的提问来源于stack exchange,提问作者giovanni sergi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:18:03