sql - 为什么此语句将表和虚拟表中的 RowID 联合起来?
问题描述
我正在努力将应用程序从 Camel 和 myBatis 提升到 Spring boot 和 Jooq。
有一个非常奇怪的 sql 语句嵌套在我们应用程序的合并语句的 using 函数中。我不明白这个声明的目的,写它的人已经不在公司了。
在 Merge 的 using 部分内部,它实际上就像
Select A, B, C, D FROM (
Select ROWID as RID, A, B, C, D FROM TableA TA WHERE A = var
UNION ALL
Select ROWID, null, null, null, null FROM dual
WHERE ROWID >= 1
ROWID 没有在任何匹配语句中使用,所以它在这里的原因对我来说毫无意义。虽然我对合并语句一开始并不了解。
编辑:Using's On 条件是匹配确保 A 等于 var,因为 var 是通过触发 sql 的函数发送的变量。基本上它只是ON A = var
解决方案
可能是作者想要保证查询将返回至少一行。(或恰好一排)
如果
Select ROWID as RID, A, B, C, D FROM TableA TA WHERE A = var
不返回任何内容(零行,没有找到任何内容),然后UNION ALL
将附加 NULL 行并将其返回。
我对甲骨文不熟悉,所以我不确定WHERE ROWID >= 1
能取得什么成就。也许是为了保证结果集总是只有一行。
推荐阅读
- javascript - 使用 socket.io 和 node 作为后端。this.emit 在这里是什么意思?
- apache-spark - 如何在 Spark 中启用 Parquet 页面索引统计信息
- java - Cucumber - 即使所有依赖项使用相同的版本,也没有找到后端
- vb.net - 如何在 vb.net 中为其宽度着色树视图节点?
- python - 如何从 10fastfingers 中提取我的打字数据?
- angular - 如何将 WebdriverIO 的浏览器对象传递给 SeleniumWebDriverHarnessEnvironment 以进行线束加载器(@angular/cdk/testing)
- python - 在 BeautifulSoup 中循环
- javascript - 如何在给定数据的 React 组件中使用嵌套 Map
- python - 提取推文的所有回复链
- amazon-web-services - 如何默认启用 AWS VPC Flow 日志?