2016-11-17 10 views
0

このコードの部分はどのように機能しますか?ORDER BY CASE句は次のコードでどのように機能しますか?

ORDER BY 
    CASE WHEN subject IN ('Chemistry','Physics') THEN 1 ELSE 0 END, 
    subject, 
    winner; 
+0

ですされているので0年代が最初に来ると思います。化学または物理学ではないそれらの科目は、科目別にアルファベット順に、次に名称順に結果の最初に表示されます。次に、ケミストリーはアルファベット順に各科目の各受賞者との物理学を行います。単純に化学を入れてみると、物理は最後の2つの科目になりますが、他のすべてのトピックはそれらの2つ前にアルファベット順にリストされます。 – xQbert

+0

こんにちは、歓迎してStackOverflow。 http://stackoverflow.com/help/mcveと特に:http://stackoverflow.com/help/how-to-ask あなたの質問は有効かもしれませんが、それはタイトルだけでなく、質問自体を本文に含めるといいですね。 – derM

+0

@xQbert助けてくれました。ありがとうございました。 –

答えて

0

まず、サブジェットが化学または物理であるかどうかを確認します。 それは、被験者が「化学」や「物理学」のいずれかが含まれていない場合、ソートスコアが1

になりますない場合、スコアは0

した後、それがスコアで結果をソートするようになります化学や物理を含む結果は、それが含まれていないものが最初に来るでしょう。

+0

ほとんど手に入れました。あなたは化学や物理を含む結果が最初に来て、次に来るものは来ないと言います。しかし、コードは最後に化学と物理学を与えます –

0

ケースの結果で注文してから、次に受賞します。

件名と受賞者の順に、化学または物理学でない行が最初に表示されます。その後、化学、そして物理学。

お試しください。

0

私は、これが何をしたい、それがデフォルトでASC SELECT winner, subject FROM nobel WHERE yr = '1984' AND subject IN ('Chemistry','Physics') ORDER BY CASE;

関連する問題