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

如何基于两列创建关联键并实现Order与Return表的LEFT JOIN?

基于组合键实现两表LEFT JOIN的单次SQL语句

需求说明

有两张需要执行LEFT JOIN的表:

  • Order表结构:
    | ID | CATA | Repo | Assc |
  • Return表结构:
    | ID | CATB | Addl | Sumin |

需以Order表为左表,用Order表的ID+CATA与Return表的ID+CATB作为关联条件执行LEFT JOIN,要求通过单次SQL语句实现。

单次SQL实现方案

无需借助CTE(公共表表达式)提前生成关联键,直接在JOIN的ON子句中拼接字段即可完成关联,这是最简洁的单次SQL实现方式:

SELECT 
    o.*,
    r.*,
    CONCAT(o.ID, o.CATA) AS 关联键_Order,
    CONCAT(r.ID, r.CATB) AS 关联键_Return
FROM 
    `Order` o
LEFT JOIN 
    `Return` r ON CONCAT(o.ID, o.CATA) = CONCAT(r.ID, r.CATB);

对原示例代码的说明

你提供的示例代码通过CTE提前生成Return表的关联键,虽能实现需求,但属于多段逻辑查询(CTE+主查询)。上述写法直接在JOIN条件中拼接字段,是标准的单次SQL实现。另外原示例中CONCAT(SUPERPNR, CATA)应为笔误,正确写法是CONCAT(ID, CATA)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:57:03