Вы можете использовать NOT EXISTS
, чтобы выбрать только строки из table_1
, которые не имеют соответствия e_id
в table_2
CREATE OR REPLACE TABLE table_1 OPTIONS (
quota_accounting_owner='sxxx@gmail.com')
AS
SELECT * FROM
(
SELECT * EXCEPT(fate_result), CAST(fate_result AS STRING) AS fate_result
FROM table_1 AS t1
WHERE NOT EXISTS (
SELECT 1
FROM table_2 AS t2
WHERE t2.e_id = t1.e_id
)
UNION DISTINCT
SELECT * EXCEPT(fate_result), CAST(fate_result AS STRING) AS fate_result
FROM table_2 AS t2
);
РЕДАКТИРОВАТЬ НЕ СУЩЕСТВУЕТ было бы правильным выбором для стандартного SQL, но, увидев комментарии ниже, здесь возникает ошибка. так что НЕ В может быть лучше
CREATE OR REPLACE TABLE table_1 OPTIONS (
quota_accounting_owner='sxxx@gmail.com')
AS
SELECT * FROM
(
SELECT * EXCEPT(fate_result), CAST(fate_result AS STRING) AS fate_result
FROM table_1 AS t1
WHERE t1.e_id NOT IN (
SELECT t2.ed_id
FROM table_2 AS t2
)
UNION DISTINCT
SELECT * EXCEPT(fate_result), CAST(fate_result AS STRING) AS fate_result
FROM table_2 AS t2
);