如何以特定顺序显示记录

时间:2013-04-15 08:30:47

标签: sql sql-server sql-server-2008

我想在单个colum表中的sequcence中显示顶部的特定记录。以下是示例查询

create table empp(ename varchar(100))


insert into empp values('Name3')
insert into empp values('Name4')
insert into empp values('Name2')
insert into empp values('Name1')

由于我想在第一和第二行的'Name2'和'Name3'中显示,其他可能是任何顺序。我尝试了以下查询,但未获得所需的结果

 select * from empp where ename in ('Name2','Name3') 
 union 
 select * from empp

预期的O / P

名称2 NAME3 名1 NAME4

2 个答案:

答案 0 :(得分:3)

试试这个: -

 Select * from empp
 ORDER BY CASE WHEN ename = 'Name2' THEN 0 
          WHEN ename='Name3' THEN 1 
          else 2
          END

Sql Fiddle演示

答案 1 :(得分:2)

使用CASE()进行自定义重新排序记录。

SELECT  *
FROM    TableName
ORDER BY    CASE WHEN ENAME = 'Name2' THEN 0
             WHEN ENAME = 'Name3' THEN 1
             ELSE 2
        END ASC

但如果你不介意name2name3的排序,只要它们在第一位,那么IN就足够了。

SELECT  *
FROM    TableName
ORDER BY    CASE WHEN ENAME IN ('Name2','Name3') 
             THEN 1
             ELSE 2
        END ASC