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

如何将含RIGHT JOIN的SQL查询改写为仅用LEFT JOIN(SQLAlchemy场景)

用LEFT JOIN改写原RIGHT JOIN查询

原查询的两次RIGHT JOIN加上WHERE ot.event_id = 1的过滤条件,语义上等价于以ot_note_procedure为主表的LEFT JOIN写法,具体改写如下:

SELECT *
FROM dbo.ot_note_procedure op
LEFT JOIN dbo.ot_note_item oi ON op.ot_note_id = oi.ot_note_id
LEFT JOIN dbo.ot_note ot ON op.ot_note_id = ot.id
WHERE ot.event_id = 1

改写逻辑说明

  1. 原查询的两次RIGHT JOIN最终是以ot_note_procedure作为结果集的基础(最后一次RIGHT JOIN会保留该表的所有行),但WHERE ot.event_id = 1会过滤掉所有未匹配到有效ot记录的行,因此可以直接将ot_note_procedure作为主表。
  2. 利用ot_note_id直接关联ot_note_item和ot_note_procedure(两者的ot_note_id指向同一个ot记录),替代原查询中通过ot表中转的关联方式。
  3. 最后通过LEFT JOIN关联ot表,并保留ot.event_id = 1的过滤条件,确保和原查询语义完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:07:41