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モードで使用できる同義語としての演算子。