如何在Mysql
中执行HQL
查询:
select id , date from TABLE_1
union all
select id , date from TABLE_2
order by date asc
我知道union
的替代方法是提出两个单独的请求,但我希望union
与order by
一起使用,因为它会对我有很大的帮助。
答案 0 :(得分:1)
您可以separate
查询两个查询,然后combine
将结果列表拖至一个,最后sort
最终列表中包含Comparator
:
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
而不是全部联合而且没有Order 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);
HashSet uniqueResult = new HashSet(list1);
答案 1 :(得分:0)
需要括号 - 你拥有的是
( select id , date from TABLE_1 )
union all
( select id , date from TABLE_2
order by date asc )
你想要的是
( select id , date from TABLE_1 )
union all
( select id , date from TABLE_2 )
order by date asc