gpt4 book ai didi

python-3.x - SQLite3用LEFT OUTER JOIN模拟RIGHT OUTER JOIN而无法更改表顺序

转载 作者:行者123 更新时间:2023-12-01 16:23:52 26 4
gpt4 key购买 nike

我是 SQL 新手,最近开始在我的代码中实现联接,我希望检索的数据可以使用以下 SQL 语句来完成。但是,如您所知,SQLite3 不支持 RIGHT OUTER 和 FULL OUTER JOIN。

因此,我想使用 LEFT OUTER JOIN 重写此语句,因为仅支持这些,任何帮助将不胜感激。

在继续并将此问题标记为重复之前,我已经查看了其他类似问题的答案,但没有人解释了重新排列查询以仅使用 LEFT JOIN 时的一般规则。

我还认为这个特定示例略有不同,因为如果不先加入 (class_placement) 表,则表(句点)无法与任何一个表(teacher_subjects、classroom_subjects)连接。

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 和 FULL OUTER JOIN

如果我真的很愚蠢,请提前抱歉,但如果您需要任何额外信息,请询问。非常感谢。

最佳答案

忽略列顺序,x right join y on cy 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 cy full join x on c。用左连接右连接来表达完全连接是一个经常被问到的重复问题。

关于python-3.x - SQLite3用LEFT OUTER JOIN模拟RIGHT OUTER JOIN而无法更改表顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57841294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com