#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