2011-10-08 69 views
2

考慮下表基於where子句條件才能在SQL Server

ColID Value 
    A  100 
    B  200 
    C  300 
    D  400 
    E  500 

哪些是相同的順序檢索值colID「C」,「A」,「d」的檢索查詢結果集?

+0

什麼是「相同的順序」?你是說按字母順序? –

+0

如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼樣本」按鈕(「{}」)以精確地格式化和語法突出顯示它!這使得那些' '和'
'小雞完全不必要..... –

回答

3

對於這種特殊的訂購,你將不得不這樣做:

SELECT * FROM MyTable WHERE ColID IN ('C', 'A', 'D') 
    ORDER BY 
     CASE ColID 
     WHEN 'C' THEN 0 
     WHEN 'A' THEN 1 
     ELSE 2 
     END 
0

你可以做這樣的事情:

select * from your table Where ColId in ('C', 'A', 'D')

至於那個特定的順序,你不能排序要麼ColId或價值。一個命令不會按照這個順序給你。

1
Select * from Tablex Where ColId in ('C', 'A', 'D') order by ColId -- This will yield 'A', 'C', 'D' order 

如果你需要它的 'C' 'A' 'd' 爲了回報,你需要有一個像另一列:

ColID Value Ordinal 
A  100 2 
B  200 5 
C  300 1 
D  400 3 
E  500 4 

然後做:

Select * from Tablex Where ColId in ('C', 'A', 'D') order by Ordinal 
3

如何使用CASE

SELECT [Value] 
FROM testTable 
WHERE colID IN ('C','A','D') 
ORDER BY (CASE colID WHEN 'C' THEN 1 WHEN 'A' THEN 2 WHEN 'D' THEN 3 END);