我想知道如何过滤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的列是结果集中的列。
在休眠中,我知道 - 选择所有行; - 选择重复的行并仅保留最新的行。
但我不知道如何将这两种情况结合在一起,我无法在任何地方找到它。
我在STRING中有一个固定长度,我在我的代码中使用假主键来识别寄存器,但是该值是由用户插入的,我之前并不知道列中的内容。
答案 0 :(得分:0)
您可以使用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);
也就是说,选择没有其他行的所有行具有相同的字符串和更大的日期。