PostgreSQLのEXCEPTを使用する場合 演算子、「エラー:各EXCEPTクエリには同じ数の列が必要です」というエラーが発生した場合 「これは、EXCEPTのいずれかの側のクエリによって返される列の数に不一致があるためです。 オペレーター。
これを修正する方法は、両方のSELECTを確認することです。 ステートメントは同じ数の列を返します。
エラーを生成するコードの例を次に示します。
SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentId, StudentName FROM Students; 結果:
ERROR: each EXCEPT query must have the same number of columns LINE 3: SELECT StudentId, StudentName FROM Students;
ここでは、最初のSELECT ステートメントは1つの列を返します(TeacherName )、ただし2番目のSELECT ステートメントは2つの列を返します(StudentId およびStudentName 。
解決策は、両方のSELECTを確認することです ステートメントは同じ数の列を返します
上記の例を使用して、2番目のSELECTから余分な列を削除することができます ステートメント:
SELECT TeacherName FROM Teachers
EXCEPT
SELECT StudentName FROM Students; 結果:
teachername ------------- Cathy Ben
もう1つのオプションは、関連する列を最初のSELECTに追加することです。 ステートメント:
SELECT TeacherId, TeacherName FROM Teachers
EXCEPT
SELECT StudentId, StudentName FROM Students; 結果:
teacherid | teachername
-----------+-------------
3 | Cathy
4 | Cathy
1 | Warren
5 | Bill
2 | Ben この例が示すように、選択したオプションに応じて異なる行が返される可能性があります。
EXCEPT ALLも使用できます 、重複する値を返します:
SELECT TeacherId, TeacherName FROM Teachers
EXCEPT ALL
SELECT StudentId, StudentName FROM Students; 結果:
teacherid | teachername
-----------+-------------
3 | Cathy
4 | Cathy
1 | Warren
5 | Bill
2 | Ben これにより、データに応じて、同じ結果または異なる結果が返される場合もあります。