我从一个数据库中拉出一个雇员列表,他们每个人都有一个办公室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不同的表中。我觉得这是一个完全的黑客行为,如果不需要的话,我宁愿不这么做。
谢谢!
发布于 2011-10-18 23:49:06
您可以在order by中使用case,因此可以更改位置:
select *
from table
order by
case when Office = 2 then 0 else Office end当然,您可以在上面的代码中参数化2
发布于 2011-10-18 23:45:58
select *
from yourTable
where OfficeId = 2
union all
select *
from yourTable
where OfficeId <> 2发布于 2011-10-18 23:49:36
select *
from yourTable
ORDER BY CASE
WHEN OfficeID = 2 THEN 0
ELSE 1
END
, OfficeIDhttps://stackoverflow.com/questions/7809971
复制相似问题