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

如何使用WITH子句重写该SQL相关子查询?

使用WITH子句重写关联子查询的方法

原SQL中最内层的子查询是关联子查询,它引用了外部查询的ORDERS表,直接提取为WITH子句的CTE会报错,因为CTE无法直接引用外部查询的表。我们可以将关联逻辑整合到CTE中,重写后的SQL如下:

WITH OrderProductLinks AS (
    SELECT DISTINCT
        o.OrderDate AS OBJECT
    FROM
        ORDERS o
    JOIN
        PRODUCTS p ON p.CategoryID = o.EmployeeID
)
SELECT OBJECT FROM OrderProductLinks

重写逻辑说明

  • 将ORDERS与PRODUCTS的关联条件p.CategoryID = o.EmployeeID直接放到CTE的JOIN语句中,替代原有的关联子查询
  • 通过一层DISTINCT完成去重,和原查询中两层DISTINCT的最终效果完全一致(原查询的两层去重本质是对关联后的OrderDate去重)
  • 最终从CTE中查询结果,输出与原SQL完全相同

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:15:50