我从数据库中提取员工列表,每个人都有办公室ID。我想按办公室ID订购,但希望用户的当前办公室出现在列表的顶部,其余的按升序顺序显示在下面。
Example:
Name Office
Mike 1
Alex 2
John 6
Steve 2
Sarah 3
If my office is office 2, I want those to appear at the top like so
Name Office
Alex 2
Steve 2
Mike 1
Sarah 3
John 6
有没有办法在某种类型的子句中执行此操作,或者我是否必须创建临时表,仅对特定的办公室ID执行第一次搜索,然后将其余部分添加到与其不同的表中ID。我觉得这是一个完整的黑客,如果不需要,我宁愿不这样做。
谢谢!
答案 0 :(得分:4)
您可以在case
中使用order by
,从而改变位置:
select *
from table
order by
case when Office = 2 then 0 else Office end
您当然可以参数化上面的2
答案 1 :(得分:0)
select *
from yourTable
where OfficeId = 2
union all
select *
from yourTable
where OfficeId <> 2
答案 2 :(得分:0)
select *
from yourTable
ORDER BY CASE
WHEN OfficeID = 2 THEN 0
ELSE 1
END
, OfficeID