mysql - UNION 与 HQL 中的排序依据

标签 mysql sql hibernate

如何在 HQL 中执行此 Mysql 查询:

select id , date from TABLE_1
union all
select id , date from TABLE_2

order by date asc

我知道 union 的替代方法是发出两个单独的请求,但我想要 unionorder by 因为它会有所帮助我很多。

最佳答案

您可以将查询分离为两个查询,然后合并将两个结果列表合并为一个,最后使用排序最终列表>比较器:

Query query1 = session.createQuery("select t.id,t.dt from Table1 t");
Query query2 = session.createQuery("select t.id,t.dt from Table2 t");

List list1= query1.list();
List list2= query2.list();

list1.add(list2);


Collections.sort(list1, new Comparator<TABLE>(){
       public int compare (Table t1, Table t2){
           return t1.getDate().compareTo(t2.getDate());
       }
});

编辑(评论后):UNION 的情况下(当查询使用 UNION 而不是 union all 并且也没有 Order By) 我们可以使用 HashSet:

Query query1 = session.createQuery("select t.id,t.dt from Table1 t");
Query query2 = session.createQuery("select t.id,t.dt from Table2 t");

List list1= query1.list();
List list2= query2.list();

list1.add(list2);

HashSet uniqueResult = new HashSet(list1);

关于mysql - UNION 与 HQL 中的排序依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28754440/

相关文章:

PHP 卡在 MySQL 的 delete 语句上

mysql - 连接数据透视表时 Laravel 作用域返回多个元素

php - 无法使用php在远程服务器上创建xml文件

sql - 如何将值列表传递给一个 Oracle Report 参数?

python - 如何在 SQLAlchemy 中查询关联表?

MySQL JOIN 在 1 个大表和多个小表上的性能

mysql - 像连接字段上的 SQL?

java - 资源 : net/codejava/spring/model/User. hbm.xml 未找到 - Spring 和 Hibernate 配置错误

java - Hibernate DAO 将对象值设置为对象

hibernate - GORM协会解释