【问题标题】:JPQL - Get most frequent item in collectionJPQL - 获取集合中最常见的项目
【发布时间】:2017-11-26 00:21:56
【问题描述】:

问题

我正在尝试获取属于某个表的集合中出现频率最高的项目。例如,如果我有表“图书馆”和表“书”,而“图书馆”有一个“书”的集合,我想从所有图书馆检索所有书。从这个结果来看,我想要最常见的书。问题是我需要这是一个查询,如果可能的话。如果我只是得到所有书籍的列表但按出现次数排序也可以。

我的尝试

SELECT l.books, COUNT(l.books) AS occur FROM Library l

SELECT b FROM Library l, l.books b ORDER BY b.name

遗憾的是,第二个并没有按所有书籍排序,它自己对每个集合进行排序。

如果需要更多信息,我当然可以提供。

希望有人能帮帮我:(

【问题讨论】:

  • 如果您想要所有书籍中最常见的书籍,您不能从书架中选择吗?为什么选择图书馆?也许我没有得到你的要求

标签: java sql oracle jpql


【解决方案1】:

您的第一个查询非常接近。查询的 ANSI 标准版本是:

SELECT l.books, COUNT(l.books) AS occur
FROM Library l
ORDER BY occur DESC
FETCH FIRST 1 ROW ONLY;

一些数据库使用TOPLIMIT 只获取一行。

【讨论】:

  • 请注意 OP 想要 JPQL 的答案,而不是 SQL
  • “状态字段路径'g.categories'无法解析为集合类型”,其中g是我的图书馆,类别是我的书。
猜你喜欢
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多