INで抽出した順番に並び替えはどのようにしたらよいでしょうか?

Hazan
2013-08-29 17:08 2037 1
SQLサーバーに関する質問です。INで抽出した順番に並び替えはどのようにしたらよいでしょうか。
[ WHERE (列名) IN (5,4,2、、、、) ] 
で問い合わせた結果は通常ランダムで返されます。
これを問い合わせた順番のまま、
5,4,2、、、、の順番に並び替えたいです。

ネットでいろいろ探していたのですが、
MySQLでは出来るようです。
これと同じことをSQLサーバーでもやりたいのですが。

どなたかご存知でしたら教えていただけないでしょうか。。。。

コメント

2013年 08月 30日 (12:02)
こんにちは。
イノ(inno)です。

-- #### テーブル作成
CREATE TABLE dbo.TempData
(
Sn int
,Data1 varchar(10)
)
GO

-- #### テストデータ登録
INSERT INTO dbo.TempData
SELECT 1, 'A' UNION ALL
SELECT 2, 'B' UNION ALL
SELECT 3, 'C' UNION ALL
SELECT 4, 'D' UNION ALL
SELECT 5, 'E' UNION ALL
SELECT 6, 'F' UNION ALL
SELECT 7, 'G' UNION ALL
SELECT 8, 'H' UNION ALL
SELECT 9, 'I' UNION ALL
SELECT 10, 'J'
GO

-- #### 結果 : 5,4,2,7の検索順番に表示
SELECT A.* FROM dbo.TempData A
JOIN (

SELECT 5 Sn, 1 Idx UNION ALL
SELECT 4 Sn, 2 Idx UNION ALL
SELECT 2 Sn, 3 Idx UNION ALL
SELECT 7 Sn, 4 Idx
) B
ON A.Sn = B.Sn
ORDER BY B.Idx

上記のようにJOINを利用して検索値に順番を付けて抽出するしかないと思います。