我正在使用 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 的此查询的语义等效项会是什么样子。
您可以通过翻转表的顺序并将 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 的行为可能略有不同。