У меня есть список идентификаторов, которые меня интересуют для выбора данных для улья. Для каждой из этих идентификаторов есть один или несколько объектов, хранящихся в таблице, называемой books
которые имеют этот идентификатор в столбце global_parent_id
. Im интересно, если theres запрос, который я могу написать, где я передаю список идентификаторов и для каждого идентификатора в списке, получите только ОДНУ запись из books
, в которой идентификатор является его global_parent_id
. Я пытался использовать этот запрос Hive (также будет принимать предложения MySQL), но он возвращает только один результат, тогда как я хочу вернуть один идентификатор детской книги для каждого родительского идентификатора. Заранее спасибо.
select distinct(book_id) from books where global_parent_id in (‘23434, 23425, ‘22322) limit 1;
limit 1
будет возвращать только 1 запись, даже если несколько строк удовлетворяют условию. Используйте функцию row_number
в Hive. (Изменить order by
в row_number
зависимости от ваших правил)
select global_parent_id,child_book_id
from (select global_parent_id,child_book_id,
row_number() over(partition by global_parent_id order by child_book_id) as rnum
from books
where global_parent_id in ('23434', '23425', '22322')
) t
where rnum=1