Обновить строки с несколькими значениями из другой таблицы - BigQuery - PullRequest
0 голосов
/ 16 октября 2018

У меня есть две таблицы в Bigquery Таблица A и Таблица B .

Таблица A имеет два столбца - name (String) & значение (число с плавающей запятой).Столбцы Имя могут содержать ноль значения.

Таблица B имеет 3 столбца - start_value (Float), end_value (FLoat) и имя (String).Эти 3 столбца не будут пустыми любой ценой.

Моя цель - обновить Таблицу A для строк, имеющих name в качестве нуля.Логика заключается в том, чтобы определить значение, для которого name равно нулю, а затем найти соответствующую строку в таблице B, где

a.value >= b.start_value and a.value <= b.end_value

Таким образом, я должен обновить все строки в таблицеА в одном запросе.Как мне этого добиться?

Примечание: две строки в таблице А не будут одинаковыми.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Вот вам код, который отлично работает на моем конце:

UPDATE `project.dataset.tableA` a
SET a.name = (
      SELECT b.name
      FROM `project.dataset.tableB` b
      WHERE value BETWEEN start_value AND end_value)
WHERE a.name IS NULL
0 голосов
/ 16 октября 2018
UPDATE `project.dataset.tableA` a 
SET a.name = b.name
FROM `project.dataset.tableB` b
WHERE a.name IS NULL
AND value BETWEEN start_value AND end_value
...