我想知道如何过滤 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/