mysql - 在整个表中使用唯一行选择的 Hibernate 查询

标签 mysql hibernate hql

我想知道如何过滤 Hibernate 结果。
例如,我有这个示例表:

--------------------------------------------
|  ID  |  STRING  |            DATE        |
--------------------------------------------
|   1  |   "ABC"  |   2014-11-07 21:45:00  |
--------------------------------------------
|   2  |   "ABC"  |   2014-11-07 22:45:00  |
--------------------------------------------
|   3  |   "DCE"  |   2014-11-07 22:48:00  |
--------------------------------------------
|   4  |   "ABC"  |   2014-11-07 23:48:00  |
--------------------------------------------

我需要的结果是:

--------------------------------------------
|  ID  |  STRING  |            DATE        |
--------------------------------------------
|   3  |   "DCE"  |   2014-11-07 22:48:00  |
--------------------------------------------
|   4  |   "ABC"  |   2014-11-07 23:48:00  |
--------------------------------------------

表格的所有行,但是,当我在 STRING 列中有相同的内容时,具有最新 DATE 的列是结果集中的列。

在 hibernate 中我知道 - 选择所有行; - 选择重复的行并只保留最近的行。

但我不知道如何将这两种情况结合在一起,而且我在任何地方都找不到它的引用。

我在 STRING 中有一个固定长度,我在我的代码中使用了一个伪造的主键来识别寄存器,但是该值是由用户插入的,而且我之前不知道该列中的内容。

最佳答案

您可以使用 not exists 子句来做到这一点:

select e.*
from example e
where not exists (select 1 from example e2 where e2.string = e.string and e2.date > e.date);

也就是说,选择没有其他行具有相同字符串和更大日期的所有行。

关于mysql - 在整个表中使用唯一行选择的 Hibernate 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813456/

相关文章:

mysql - 数据库规范化——我想?

java - Hibernate 验证注解——验证至少一个字段不为空

java - 注释 ConcurrentHashMap 时处于 hibernate 状态的 "Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements"

sql - 访问 hql 查询中的连接表以获取 grails 中的多对多关系

java - 从 Hibernate 的三个表中获取部分对象

MYSQL : writing a query where a column is the result of a boolean expression

php - 更新图像数组

mysql - 流畅的 NHibernate 与 MySQL、Mono 和 ASP MVC 3

java - 如何使用 Hibernate 调用自定义数据库函数?

java - 执行HQL请求