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

SQL Serverエラー4104:マルチパート識別子をバインドできませんでした。

    「マルチパート識別子をバインドできませんでした」というエラーが表示された場合は、通常、クエリに含まれていないテーブルまたはエイリアスのいずれかを1つ以上の列の前に付けていることを意味します。実際にテーブルに割り当てていないこと。

    幸い、エラーメッセージには、問題の原因となっているマルチパート識別子が表示されます。

    エラーを取得する方法を示す例を次に示します。

    SELECT * FROM Cats
    INNER JOIN Dogs d
    ON c.CatName = d.DogName;

    結果:

    Msg 4104, Level 16, State 1, Line 3
    The multi-part identifier "c.CatName" could not be bound.

    この例では、のエイリアスを含めるのを忘れています。 テーブル。

    エイリアスを指定した後でテーブル名を参照しようとすると、エラーも発生します。

    このように:

    SELECT * FROM Cats c
    INNER JOIN Dogs d
    ON Cats.CatName = d.DogName;

    結果:

    Msg 4104, Level 16, State 1, Line 3
    The multi-part identifier "Cats.CatName" could not be bound.

    したがって、この場合、エイリアスを正しく割り当てましたが、ON 句エイリアスではなく実際のテーブル名を参照しました。

    ソリューション

    したがって、解決策は、クエリの後半で参照する可能性のあるすべてのエイリアスを割り当てたことを確認し、テーブル名の代わりにそれらのエイリアスを直接使用することを確認することです。

    したがって、次のようなエイリアスを使用する場合:

    SELECT * FROM Cats c
    INNER JOIN Dogs d
    ON c.CatName = d.DogName;

    または、次のようにエイリアスを使用しないことを選択した場合:

    SELECT * FROM Cats
    INNER JOIN Dogs
    ON Cats.CatName = Dogs.DogName;


    1. オーケストレーションツールを使用せずにMariaDBGaleraクラスターを実行する-DBコンテナー管理:パート2

    2. SQLServerドライバーを使用してPDO経由でSQLServerに接続する

    3. Spring、Hibernate、Blobの遅延読み込み

    4. MicrosoftSQLシーケンスとの数値の競合を回避する