gundumw100 2009-09-08 15:00 采纳率: 0%
浏览 215
已采纳

问一条sql语句

我要查询所有记录,并且要让state=2的记录排在前面,我该怎么样表达?谢谢
[b]问题补充:[/b]
state 有可能是0,1,2,3,4,5,6。。。。
[b]问题补充:[/b]
又,如果用 Order.asc("XXX")这么表达?
[b]问题补充:[/b]
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(TableName.class);
detachedCriteria.addOrder(Order.asc("state"));
如果要用上面的方法表达,该怎么写?
[b]问题补充:[/b]
select * from table order by (case state when 2 then 1 else 2 end) asc

select * from table where state=2
union all
select * from table where state<>2

这2中方法哪种效率更高一些呢?
我本来的确想用hibernate的Criteria.,看来只能用sql了

  • 写回答

12条回答 默认 最新

  • jpdan 2009-09-08 20:32
    关注

    你的需求只是把state=2的排在最前面,现在不是已经做到了么?
    select * from table order by (case state when 2 then 1 else 2 end) asc
    这个就是的啊,不管你state有多少个不同的值,这个SQL都OK啊。
    Order.asc("XXX")什么意思?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(11条)

报告相同问题?