sql - 在二级嵌套子查询中访问外部表
问题描述
假设我有,
select
(select SomColumn FROM MyInnerTable WHERE MyInnerTable.C1 = MyOuterTable.C2) AS FirstColumn
,(select SomColumn FROM (SELECT SomColumn FROM MyInnerTable2 WHERE MyInnerTable2.C1 = MyOuterTable.C2)) AS SecondColumn
form MyOuterTable
FirstColumn 有效,但对于 SecondColumn,它说 MyOuterTable.C2 未找到。
解决方案
Oracle(和 MySQL 以及可能的其他一些数据库)将表的范围限制在子查询中的一级。哎呀。不能那样做。
在这种情况下,LEFT JOIN
无论如何你都应该使用。您的查询并不真正需要子查询,但您可以使用:
select i.SomeColumn, i.SomeColumn as AS SecondColumn
form MyOuterTable o LEFT JOIN
MyInnerTable i
ON MyInnerTable.C1 = MyOuterTable.C2;
在更复杂的情况下,您可能会发现横向连接是解决问题所需要的。如果您需要帮助,请使用更好的示例查询提出新问题。
推荐阅读
- javascript - How to keep watching mouse move outside iframe?
- node.js - 使用 multer 中间件的 req.files 快速路由返回未定义
- c# - 无法连接到 ArangoDB 服务器
- java - 如何使用两个类将两个整数相乘,第一类包含方法 int calculateMultiplication (int, int),第二类包含主要方法?
- javascript - 使用 SheetJS js-xlsx 在反应本机表的列中添加标题
- keycloak - SPI 或 API 在验证刷新令牌时注入自定义逻辑
- c# - 为什么 WCF 服务在本地而不是网络上运行应用程序?
- javascript - 获取node js中响应数据的正确格式
- java - 如何避免在 apache tomcat 8 中更改会话 ID
- reactjs - Next.js "_framerMotion.motion.custom 不是函数"