Как соединить таблицы BigQuery. Оператор JOIN
JOINfrom_item Операция соединяет воединыжды два SELECT а, чтоб предложение могло запрашивать их как один источник. Предложение join_type и ON либо USING ( “условие объединения”) описывает, как соединять воединыжды и отбрасывать строчки из 2-ух from_item s для формирования одного источника.
[INNER] JOIN
An INNER JOIN либо просто JOIN отлично вычисляет декартово произведение 2-ух from_item s и отбрасывает все строчки , которые не соответствуют условию объединения. “Отлично” значит, что можно воплотить без фактического вычисления декартова произведения. INNER JOIN
Пример
Этот запрос производится INNER JOIN для таблиц Roster и TeamMascot
CROSS JOIN
CROSS JOIN возвращает декартово произведение 2-ух from_item ов. Иными словами, он соединяет воединыжды каждую строчку из первой from_item с каждой строчкой из 2-ой from_item .
Если строчки 2-ух from_item ов независимы, то итог имеет M * N строк, беря во внимание M строк в одной from_item и N в иной. Направьте внимание, что это как и раньше справедливо для варианта, когда у хоть какого from_item из их нулевые строчки.
В FROM предложении a CROSS JOIN быть может написано так:
Вы сможете применять коррелированное перекрестное соединение для преобразования либо выравнивания ARRAY в набор строк. Чтоб выяснить больше, см. Преобразуйте элементы массива в строчки таблицы.
Примеры
Этот запрос производится CROSS JOIN для таблиц Roster и TeamMascot
Перекрестное соединение через запятую (,)
CROSS JOIN ы могут быть записаны неявно с запятой. Это именуется перекрестным соединением через запятую.
Соединение через запятую смотрится так в FROM предложении:
Вы не сможете писать перекрестные соединения через запятую снутри круглых скобок. Чтоб выяснить больше, см. Соединяйте операции в определенной последовательности.
Вы сможете применять коррелированное перекрестное соединение через запятую для преобразования либо выравнивания ARRAY в набор строк. Чтоб выяснить больше, см. Преобразуйте элементы массива в строчки таблицы.
Примеры
Этот запрос делает перекрестное соединение через запятую в таблицах Roster и TeamMascot
INNER [OUTER] JOIN
A FULL OUTER JOIN (либо просто FULL JOIN ) возвращает все поля для всех строк в обоих from_item ы, которые удовлетворяют условию соединения.
FULL показывает, что ворачиваются все строчки из обоих from_item ов, даже если они не соответствуют условию соединения.
OUTER показывает , что если данная строчка из 1-го from_item и не присоединяется ни к одной строке в другом from_item , строчка возвратится с нулевыми значениями для всех столбцов из другого from_item .
Пример
Этот запрос делает a FULL JOIN для таблиц Roster и TeamMascot
LEFT [OUTER] JOIN
Итог a LEFT OUTER JOIN (либо просто LEFT JOIN ) для 2-ух from_item ов постоянно сохраняет все строчки слева from_item в JOIN операции, даже если ни одна строчка справа from_item не удовлетворяет предикату объединения.
LEFT показывает, что ворачиваются все строчки слева from_item ; если данная строчка слева from_item не присоединяется ни к одной строке справа from_item , строчка возвратится с нулевыми значениями для всех столбцов справа from_item . Строчки справа, которые не соединяются ни с одной строчкой слева from_item , отбрасываются
Пример
Этот запрос делает a LEFT JOIN для таблиц Roster и TeamMascot
RIGHT [OUTER] JOIN
Итог а RIGHT OUTER JOIN (либо просто RIGHT JOIN ) аналогичен и симметричен LEFT OUTER JOIN результату
Пример
Этот запрос делает a RIGHT JOIN для таблиц Roster и TeamMascot
ON значение
Объединенная строчка (итог соединения 2-ух строк) удовлетворяет ON условию соединения, если ворачивается условие соединения TRUE .
Пример
Этот запрос производится INNER JOIN в таблице Roster и TeamMascot
USING значение
USING предложение просит перечня столбцов из 1-го либо нескольких столбцов, которые встречаются в обеих входных таблицах. Он делает сопоставление на равенство для этого столбца, и строчки удовлетворяют условию соединения, если сопоставление на равенство ворачивается TRUE .
Пример
Этот запрос производится INNER JOIN в таблице Roster и TeamMascot
Этот оператор возвращает строчки из Roster и TeamMascot где Roster.SchooldID совпадает с TeamMascot.SchooldID . Результаты содержат в себе один SchooldID столбец.
ON и USING значения
Главные ON слова и USING не эквивалентны, но они похожи. ON возвращает несколько столбцов и USING возвращает один.
Хотя ON и USING не эквивалентны, они могут возвращать одни и те же результаты , если вы укажете столбцы, которые желаете возвратить.