SQLite3 使用 LEFT OUTER JOIN 模拟 RIGHT OUTER JOIN 而无法更改 table 顺序
SQLite3 Simulate RIGHT OUTER JOIN with LEFT OUTER JOIN's without being able to change table order
我是 SQL 的新手,最近开始在我的代码中实现连接,我希望检索的数据可以使用以下 SQL 语句完成。但是,如您所知,SQLite3 不支持 RIGHT OUTER 和 FULL OUTER JOIN。
因此我想使用 LEFT OUTER JOIN 重写此语句,因为仅支持这些,我们将不胜感激。
在继续将此问题标记为重复之前,我已经查看了其他类似问题的答案,但 none 已经解释了重新排列查询以仅使用 LEFT JOIN 的一般规则。
我还认为这个特定示例在某种意义上略有不同,因为 table(句点)不能与 table 中的任何一个(teacher_subjects、classroom_subjects) 没有先加入 (class_placement) table.
FROM P
LEFT JOIN CP
ON P.PID = CP.PID
RIGHT JOIN CS
ON CP.CID = CS.CID
RIGHT JOIN TS
ON CP.TID = TS.TID
WHERE (CP.CID IS NULL
AND CP.TID IS NULL)
ORDER BY P.PID;
毫不奇怪,我从 运行 这个查询中得到的错误是:
sqlite3.OperationalError: RIGHT and FULL OUTER JOINs are not currently supported
如果我真的很愚蠢,请提前道歉,但如果您需要任何额外信息,请询问。非常感谢。
忽略列顺序,x right join y on c
是 y left join x on c
。这通常是明确表示的。 (但您也可以只将连接的定义应用到您的原始表达式以获得具有您想要的值的子表达式。)您可以阅读 from
语法以了解如何为优先级添加括号或子查询。应用我们得到的身份 ts left join (cs left join (p left join cp on x) on y) on z
.
同样,忽略列顺序,x full join y on c
是 y full join x on c
。用 left join
和 right join
表达 full join
是一个经常被问到的重复问题。
我是 SQL 的新手,最近开始在我的代码中实现连接,我希望检索的数据可以使用以下 SQL 语句完成。但是,如您所知,SQLite3 不支持 RIGHT OUTER 和 FULL OUTER JOIN。
因此我想使用 LEFT OUTER JOIN 重写此语句,因为仅支持这些,我们将不胜感激。
在继续将此问题标记为重复之前,我已经查看了其他类似问题的答案,但 none 已经解释了重新排列查询以仅使用 LEFT JOIN 的一般规则。
我还认为这个特定示例在某种意义上略有不同,因为 table(句点)不能与 table 中的任何一个(teacher_subjects、classroom_subjects) 没有先加入 (class_placement) table.
FROM P
LEFT JOIN CP
ON P.PID = CP.PID
RIGHT JOIN CS
ON CP.CID = CS.CID
RIGHT JOIN TS
ON CP.TID = TS.TID
WHERE (CP.CID IS NULL
AND CP.TID IS NULL)
ORDER BY P.PID;
毫不奇怪,我从 运行 这个查询中得到的错误是:
sqlite3.OperationalError: RIGHT and FULL OUTER JOINs are not currently supported
如果我真的很愚蠢,请提前道歉,但如果您需要任何额外信息,请询问。非常感谢。
忽略列顺序,x right join y on c
是 y left join x on c
。这通常是明确表示的。 (但您也可以只将连接的定义应用到您的原始表达式以获得具有您想要的值的子表达式。)您可以阅读 from
语法以了解如何为优先级添加括号或子查询。应用我们得到的身份 ts left join (cs left join (p left join cp on x) on y) on z
.
同样,忽略列顺序,x full join y on c
是 y full join x on c
。用 left join
和 right join
表达 full join
是一个经常被问到的重复问题。