sql - 什么是交叉连接(选择 0 作为 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION...)
问题描述
在回溯旧代码进行清理时,我遇到了一些奇怪的遗留代码,我正试图准确地确定它的作用......
CROSS JOIN (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) as b
这是一种我以前从未见过的技术,包括在交叉连接中对数字进行多个联合选择,老实说,我真的很困惑它在做什么以及为什么有人会这样做。
解决方案
Cross join
创建笛卡尔积。
假设from
子句如下所示:
FROM t CROSS JOIN
( . . . )
这将为 中的每一行创建四行t
。这些行中的值b.a
从 0 到 3 不等。
推荐阅读
- python - 如何创建数据集的连续分布?
- reactjs - 如何在 Laravel 项目中使用 React 设置热重载?
- opencv - 如何在 OpenCV 中使用 inRange 执行准确的阈值处理
- java - 如何在 JEditorPane 上应用样式?
- python - 如何连接 N 个列表并对 Python 中列表列表的 N 个元素求和?
- google-chrome - 增加谷歌搜索页面
- sas - Proc SQL 将十进制转换为分钟和秒 (SAS)
- bookdown - bookdown 中的 Cookie 政策
- python - Python 库“nsetools”不能在 linux 上运行
- java - 为什么我在 TOMCAT 8.5 上的 Java JAX-RS webapp 报告一个 MultiException (JAXBContext / WADL) 并引用了 GLASSFISH 包名称?