什么是交叉联接(将0作为UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ...)

时间:2018-06-30 22:16:10

标签: sql union-all

在回溯旧代码进行清理时,我遇到了一些奇怪的旧代码,而我正试图确切查明它的作用...

CROSS JOIN (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) as b

这是我以前从未见过的一种技术,包括在交叉联接中对多个数字进行联合选择,而老实说,我真的很困惑它在做什么以及为什么有人会这么做。

1 个答案:

答案 0 :(得分:2)

Cross join创建笛卡尔积。

假设from子句如下:

FROM t CROSS JOIN
     ( . . . )

这将为t中的每一行创建四行。这些行中b.a的值从0到3。