MySQL / Hive запрос для одного результата на элемент в массиве

0

У меня есть список идентификаторов, которые меня интересуют для выбора данных для улья. Для каждой из этих идентификаторов есть один или несколько объектов, хранящихся в таблице, называемой 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;
Теги:
database
select
hive

1 ответ

0
Лучший ответ

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
  • 0
    Разве это не вернет только случаи, когда есть только одна дочерняя книга, которая указывает на родительский идентификатор?
  • 0
    Я ищу запрос, который вернет одну дочернюю книгу для каждого родительского идентификатора (даже если существует более одной дочерней книги, которая указывает на родительский идентификатор)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню