sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLの「エラー:各UNIONクエリには同じ数の列が必要」を修正

    UNIONを使用する場合 PostgreSQLの演算子で、「エラー:各UNIONクエリには同じ数の列が必要です」というエラーが発生した場合 「これは、UNIONのいずれかの側のクエリによって返される列の数に不一致があるためです。 オペレーター。

    このエラーは、各SELECTによって返される列の数が発生した場合に発生します。 ステートメントが異なります。

    これを修正する方法は、両方のSELECTを確認することです。 ステートメントは同じ数の列を返します。

    エラーの例

    エラーを生成するコードの例を次に示します。

    SELECT TeacherName FROM Teachers
    UNION
    SELECT StudentId, StudentName FROM Students;

    結果:

    ERROR:  each UNION 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
    UNION
    SELECT StudentName FROM Students;

    または、最初のSELECTに別の列を追加することもできます ステートメント:

    SELECT TeacherId, TeacherName FROM Teachers
    UNION
    SELECT StudentId, StudentName FROM Students;

    選択したオプションに応じて、異なる結果が得られる可能性があることに注意してください。これは、UNION デフォルトで個別の行を返します。別の列を追加すると、追加の列の値によっては、以前に複製された行が一意の行になる可能性があります。

    UNION ALLも使用できます 、重複する値を返します:

    SELECT TeacherId, TeacherName FROM Teachers
    UNION ALL
    SELECT StudentId, StudentName FROM Students;

    これにより、他の例とは異なる結果が返される場合もあります。


    1. MySQLndがアクティブなドライバーであるかどうかを知る方法は?

    2. MariaDBでSHOWLOCALESを実行する方法

    3. 2つのテーブルの結合でクエリを更新する

    4. Postgresql:MacOSXを使用してpg_hba.confファイルを見つける方法