0

我想从单个列表中按顺序在顶部显示特定记录。以下是示例查询

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 名称 3 名称 1 名称 4

4

2 回答 2

3

尝试这个 :-

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

Sql 小提琴演示

于 2013-04-15T08:34:44.097 回答
2

用于CASE()记录的自定义重新排序。

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

但是,如果您不介意排序,name2只要name3它们在首位,IN就足够了。

SELECT  *
FROM    TableName
ORDER BY    CASE WHEN ENAME IN ('Name2','Name3') 
             THEN 1
             ELSE 2
        END ASC
于 2013-04-15T08:34:24.853 回答