Oracle Databaseでは、MINUS 演算子は、最初のクエリによって返される一意の行のみを返すために使用されますが、2番目のクエリによって返されることはありません。
次のテーブルがあるとします。
SELECT * FROM Teachers;
SELECT * FROM Students; 結果:
| TEACHERID | TEACHERNAME |
|---|---|
| 1 | ウォーレン |
| 2 | ベン |
| 3 | キャシー |
| 4 | キャシー |
| 5 | 請求書 |
| 6 | 請求書 |
| STUDENTID | 学生名 |
|---|---|
| 1 | フェイ |
| 2 | ジェット |
| 3 | スパイク |
| 4 | アイン |
| 5 | ウォーレン |
| 6 | 請求書 |
MINUSを使用できます 生徒ではない教師を返すためのオペレーター:
SELECT TeacherName FROM Teachers
MINUS
SELECT StudentName FROM Students; 結果:
| TEACHERNAME |
|---|
| ベン |
| キャシー |
したがって、Teachersに表示される値のみを取得します Studentsにも表示されないテーブル テーブル。
左側にあるテーブルと右側にあるテーブルに応じて、異なる結果を得ることができます。 Studentsを配置する例を次に示します。 左側の表とTeachers 右側:
SELECT StudentName FROM Students
MINUS
SELECT TeacherName FROM Teachers; 結果:
| STUDENTNAME |
|---|
| Ein |
| フェイ |
| ジェット |
| スパイク |
今回は、教師ではない生徒を迎えます。
MINUS 演算子は個別の行のみを返します。したがって、この例では、Cathyに対して1行だけが返されます。 、その名前の先生が2人いるのに。
MINUSを使用しなくても同じ結果を得ることができます オペレーター。たとえば、最初の例を次のように書き直すことができます。
SELECT
DISTINCT TeacherName
FROM Teachers t
WHERE NOT EXISTS (SELECT StudentName FROM Students s
WHERE t.TeacherName = s.StudentName); 結果:
| TEACHERNAME |
|---|
| ベン |
| キャシー |
MINUS 他のRDBMSの同等物
OracleのMINUS 演算子はEXCEPTに似ています 他の多くのRDBMSが使用する演算子。 MariaDBにはEXCEPTがあります 演算子ですが、MINUSも導入されています Oracleモードで使用できる同義語としての演算子。