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')

1 行目と 2 行目の '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 に答える