2017-03-01 9 views
0

最初に結果のグループをリストに表示し、残りの結果を以下の表から表示する必要があります。同じテーブルの共用体による注文結果

私はSQL: how to use UNION and order by a specific select?を試しましたが、私の場合は動作しません。この

SELECT * FROM (
    SELECT id, display as ordered 
     FROM table 
    WHERE id in (...) --these need to be first 
    UNION 
    SELECT id, display 
     FROM table 
    WHERE id not in (...) --these need to be at the end 
) 
ORDER BY ordered 

私の結果は、すべての関係なく、私は何をすべきかの表示順戻って来ているよう

私のクエリが見えます。

私はOracle、btwを使用しています。

ありがとうございます。

答えて

5

注文を得るには、明示的に番号を含める必要があります。この問合せは、最初の結果セットを最初に、次に2番目の結果セットを順序付けます。各グループにおいて、結果は再びidによって順序づけされる。 unionまたはunion allのための必要はありません

select id, display 
from table 
order by (case when id in (. . .) then 1 -- first list 
       when id in (. . .) then 3 -- last list 
       else 2      -- everything else 
      end); 

:私はあなたがこのようやるべきだと思う

SELECT id,display FROM (
    SELECT id, display,1 as ordered 
     FROM table 
    WHERE id in (...) --these need to be first 
    UNION 
    SELECT id, display,2 
     FROM table 
    WHERE id not in (...) --these need to be at the end 
) 
ORDER BY ordered,id 
+0

うわー、迅速な対応に感謝を。大臣のおかげで –

+0

@RobM答えを受け入れることを検討しますか?このように多くのユーザーに利益がもたらされます。 –

1

(不要な場合は、それを削除します)。ただ一つのorder by表現。

すべてのIDが不要な場合は、where句を含める必要があります。

(私はリストを構成するものについてのあなたの質問は少し不明瞭見つける。それは本当に適切である場合は、not inを使用することができます。)

+0

...必要に応じて、二次注文基準としてid(またはその他のもの)を追加します – mathguy

関連する問題