Что такое CROSS JOIN (ВЫБЕРИТЕ 0 как СОЮЗ ВСЕ ВЫБРАТЬ 1 СОЮЗ ВСЕ ВЫБРАТЬ 2 СОЮЗ ...) - PullRequest
0 голосов
/ 01 июля 2018

Я наткнулся на странный код устаревшего кода, возвращаясь к старому коду для очистки, и я пытаюсь точно определить, что он делает ...

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

Эту технику я еще не видел, включая множественное объединение чисел в перекрестном соединении, и я, честно говоря, очень озадачен тем, что он делает, и почему кто-то это сделал.

1 Ответ

0 голосов
/ 01 июля 2018

Cross join создает декартово произведение.

Предполагается, что предложение from выглядит следующим образом:

FROM t CROSS JOIN
     ( . . . )

Это создает четыре строки для каждой строки в t. Значение b.a в этих строках варьируется от 0 до 3.

...