SQLite 中嵌套内连接的问题
Posted
技术标签:
【中文标题】SQLite 中嵌套内连接的问题【英文标题】:problem with nested inner joins in SQLIte 【发布时间】:2011-10-27 15:05:51 【问题描述】:下面的sql语句不会在SQLite中运行:
select *
from A
left join (B inner join C on B.fkC = C.pk) on A.optionalfkB = B.pk
我得到一个 sqlException "未知列 B.pk"
根据@http://www.sqlite.org/lang_select.html 的文档,这应该可以工作,并且可以在所有其他 sql 实现中工作。我做错了吗?
【问题讨论】:
我有两个选择,但都不是很好的性能:使用嵌套的 sql 表达式,或者只是 B 和 C 之间的另一个左连接。我不喜欢使用左连接,除非我有虽然因为我发现他们需要更长的时间来执行 您能否发布表的架构(即使它们是示例)?这真的有助于回答这个问题。 您是否尝试使用这样的子查询?select * from A left join (SELECT * FROM B inner join C on B.fkC = C.pk) subQ on A.optionalfkB = subQ.pk
【参考方案1】:
它不起作用,因为“外部”查询不知道 B 是什么。
select *
from A
left join (B inner join C on B.fkC = C.pk) B on A.optionalfkB = B.pk
没有select
,(B inner join C on B.fkC = C.pk)
很奇怪,但规范确实说它是有效的。
【讨论】:
你是个传奇!谢谢!我在任何地方都找不到解决方案,而您成功了。 @stitty 你问这个问题两年后还在这个问题上吗?哈哈,很高兴我能帮上忙!以上是关于SQLite 中嵌套内连接的问题的主要内容,如果未能解决你的问题,请参考以下文章