如何重写此查询以仅使用左连接?

问题描述 投票:0回答:1

我正在使用 SQLAlchemy(不支持 RIGHT JOIN)重写以下查询:

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

如何仅使用 LEFT JOIN 编写它?我知道我可以只使用 INNER JOIN,但我很好奇仅使用 LEFT JOIN 的此查询的语义等效项会是什么样子。

sql sql-server
1个回答
0
投票

您可以通过翻转表的顺序并将 RIGHT 更改为 LEFT 连接来获得等效结果。最右边的表成为主 FROM 表:

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

请记住,与原始查询相比,WHERE 子句对于 NULL 的行为可能略有不同。

© www.soinside.com 2019 - 2024. All rights reserved.