Улей, объединяющий полное внешнее соединение, а не в?

#hive #hiveql

#улей #hiveql

Вопрос:

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

 SELECT 
    a.uid, 
    a.order_id
FROM table_a a
FULL OUTER JOIN 
(
    SELECT 
        uid, 
        order_id
    FROM table_b
) b
ON (a.uid = b.uid AND a.order_id = b.order_id)
  

Результатом этого запроса является набор идентификаторов uid и order_ids.

Теперь у меня есть black_listed таблица, в которой есть набор uid. Я хочу, чтобы этот набор uids из черного списка не был частью конечного результата.

Есть ли способ, которым я могу добавить этот подзапрос remove-blacklisted-uids к приведенному выше запросу (сделайте это в одном запросе)

Итак, если у меня есть таблица, вызываемая black_list с uid1 помощью uid2 и, то оба этих uid не должны быть частью моего конечного результата первого запроса.

Комментарии:

1. являются ли uid1 и uid2 отдельными столбцами в таблице black_list?

2. Нет, значения одного столбца

Ответ №1:

Это можно сделать с помощью left join .

 SELECT 
    a.uid, 
    a.order_id
FROM table_a a
FULL OUTER JOIN 
(
    SELECT 
        uid, 
        order_id
    FROM table_b
) b
ON (a.uid = b.uid AND a.order_id = b.order_id)
LEFT JOIN black_listed bl on bl.id = a.uid 
WHERE bl.id IS NULL