私はこの質問をウェブサイトで見つけ出し、無用に解決しようとしていました。列名、年、件名のノーベル賞受賞者のテーブルがあります。問題は次のとおりです。1984年の受賞者と主題と受賞者名で注文したものを表示します。化学と物理を最後に挙げる。ORDER BYステートメントに条件を追加しました
私は、次のを思い付いた:
結果を与えるSELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY CASE
WHEN subject NOT IN ('Chemistry','Physics') THEN 1
WHEN subject IN ('Chemistry','Physics') THEN 2
ELSE 3 END
:
winner subject
Richard Stone Economics
Jaroslav Seifert Literature
Niels K. Jerne Medicine
Georges J.F. Köhler Medicine
César Milstein Medicine
Desmond Tutu Peace
Bruce Merrifield Chemistry
Carlo Rubbia Physics
Simon van der Meer Physics
は、しかし私は、各被験者のための受賞者の順序は、さらにその結果、つまり名でソートすることが必要Caesar Milsteinが3位に、その後Georges JKが、 Kahler、そしてNiels K. Jerne。
あなたの 'ORDER BY'に2番目の基準を追加するだけです:' ORDER BY CASE WHEN ...... END、subject、winner' – Lamak
ここではほとんどの人が指摘しているように、 'ORDER BY'節がこれを解決するはずです。しかし、私は上記のウェブサイト自体でクエリを実行しています。私は(おそらく間違っていますか?)推測しているのは、MariaDBを使用して別の出力が得られることです。いずれにしても、「ORDER BY」に「勝者」を追加すると、「被験者」列を無視した「勝者」によってのみ結果がソートされます。 私はこの質問を見つけたページです - sqlzoo.net/wiki/SELECT_from_Nobel_Tutorial - 質問No。誰かがソースについて興味がある場合に備えて、14。 – dreadnought303
SQLZは 'SELECT winner、subject from nobel WHERE yr = 1984 ORDER BY件名IN( 'Physics'、 'Chemistry')、件名、受賞者に満足しているようです。 SQL Serverは 'IN'を' 0'または '1'を返す演算子として扱わないことに注意してください。戻り値の型は' BOOLEAN'としてリストされます。 [boolean](https://msdn.microsoft.com/en-us/library/ms188074.aspx#Anchor_0)データ型がありますが、他のSQL Serverデータ型とは異なり、ブール型のデータ型をテーブルの列または変数のデータ型として指定することはできず、結果セットで返すことはできません。 – HABO