2017-01-12 19 views
1

私はしかし、わずか数はGroup Titleを持って、すべてがTitleを持って、条件付き順序は

ID 
Title 
Group Title 

すべてがIDを持っている含まれているSQLテーブルを持っています。
私はレコードのリストを取りたいと思っていますが、Group Titleが存在する場合は、それを無効にしたいと思いますTitle
それから、結果でリストを注文したいと思います。私は3つのレコード

id   title   group title 
1   Womble 
2   Alphabet  Zebra 
3   Mirror 

を持っているのであれば、
は、得られた結果は

id   result 
3   Mirror 
1   Womble 
2   Zebra 

どのように私は、単一のクエリでこれを達成することができますでしょうか?

は、私は次のように動作しているようですけれども選択で選択を行う必要がある疑いがある、しかしgroup titleは、NULLで何も表示されない場合はビット「ハック」と

SELECT CONCAT_WS('',group_title,title) AS ordering,id,film_title,series_title 
FROM records 
ORDER BY ordering 

ので浮気ようだが、それならばそうであれば、group_titleはタイトルにボルト止めされます。このフィールドは、醜く見えても決して表示されません。

+0

私は大量アップロードを持っている場合、私は自信を持って上記のステートメントを使用傾けるだけの理由がありますデータのうち、誰かがgroup_titleにスペースを入れないことを保証することはできません。これは注文結果の先頭に追加され、注文に影響します – MOLEDesign

答えて

0

私はあなたが望むものを理解していれば、私はあなたがこのようなクエリを使用することができると思う:

select 
    case when trim(coalesce(group_title, '')) = '' then 
     title 
    else 
     group_title 
    end ordering, 
    id, film_title, series_title 
from records 
order by ordering; 

[ SQL Fiddle Demo ]