2013-04-15 100 views
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') 

正如我想在「名稱2」和「NAME3」在第一和第二行其他顯示可以是任何序列。我曾嘗試下面的查詢,但沒有得到期望的結果

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

預期的O/P

名2 NAME3 名1 NAME4

+0

什麼是你的問題。 – Luv

+0

編輯我的問題。請看看 – Smaug

回答

3

試試這個: -

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

Sql Fiddle演示

+0

你是對的!!你的回答幫助了我。非常感謝你 – Smaug

+1

Sql小提琴是intersting工具。感謝您的鏈接 – Smaug

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 
+0

這會顯示所有記錄,包括名字2和名字3作爲第一和第二記錄嗎? – Freelancer

+0

@Freelancer是的。 –

+0

okey。那麼謝謝你。 – Freelancer