sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server Error 4104:Den flerdelade identifieraren kunde inte bindas.

Om du får ett felmeddelande som talar om för dig att "Den flerdelade identifieraren kunde inte bindas." betyder det vanligtvis att du prefixer en eller flera kolumner med antingen en tabell som inte ingår i din fråga eller ett alias som du faktiskt inte har tilldelat en tabell.

Lyckligtvis visar felmeddelandet dig vilken flerdelad identifierare som orsakar problemet.

Exempel

Här är ett exempel för att visa hur du får felet.

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

Resultat:

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

I det här exemplet glömmer jag att inkludera ett alias för Katter bord.

Felet kommer också att uppstå om du försöker referera till tabellnamnet efter att du redan har angett ett alias.

Så här:

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

Resultat:

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

Så i det här fallet tilldelade jag aliaset korrekt, men i ON klausul Jag refererade till det faktiska tabellnamnet istället för aliaset.

Lösningen

Så lösningen är att se till att du har tilldelat alla alias som du kan referera till senare i frågan, och även att se till att du använder dessa alias istället för tabellnamnet direkt.

Så om du ska använda alias, så här:

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

Eller om du väljer att inte använda alias, så här:

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


  1. Hur man sammanfogar två tabeller med hjälp av en kommaseparerad lista i sammanfogningsfältet

  2. Exempel på APEX_ZIP

  3. Enkelt sätt att överföra kolumner och rader i SQL?

  4. Fjärråtkomst till MySQL-server via SSH-tunnel