2012-01-27 8 views
3

BY異なるORDERと私は同じテーブルからデータを取得したいのですが、みとめ同じテーブルに対して選択するが、

すなわち3番目のフィールド

の値に基づいて、2つの異なる分野、順

SELECT * FROM MyTable 
WHERE Status = 0 
ORDER BY SortOrder 

UNION 

SELECT * FROM MyTable 
WHERE Status = 1 
ORDER BY ModifiedAt DESC 

もちろん、2つのORDER BYをUNIONに持つことはできません。おそらく、2つのデータベースクエリに頼らなくても(パフォーマンスの観点から)良い方法があるのでしょうか?

+0

順にcaseを使用することができますか? –

+0

あなたはSortOrder、次にModifiedAtでソートしようとしていますか、本当に同じデータが2つの異なる方法でソートされますか? – billinkc

+0

いいえ、各クエリは「ステータス」によるフィルタのためにサブセットを返します。私は両方のデータセットを同じビューに別々に表示する必要がありますが、2つのクエリを避けようとしています – seekay

答えて

1

あなたはあなただけ違っ命じた検索結果で同じデータを2回、欲しい

select * 
from YourTable 
where Status in (0, 1) 
order by Status, 
     case when Status = 0 then SortOrder end, 
     ModifiedAt desc 
関連する問題