Beim Arbeiten mit Abfragen, die mehrere Tabellen verknüpfen, ist das nicht ungewöhnlich Fehler bei mehrdeutigen Spaltennamen. Dies tritt auf, wenn in den verbundenen Tabellen identische Spaltennamen vorhanden sind, was dazu führt, dass SQL Server Management Studio (SSMS) Schwierigkeiten hat, die richtige Tabellenreferenz zuzuweisen.
Betrachten Sie die folgende Abfrage als Beispiel:
SELECT VendorName, InvoiceID, InvoiceSequence, InvoiceLineItemAmount FROM Vendors JOIN Invoices ON (Vendors.VendorID = Invoices.VendorID) JOIN InvoiceLineItems ON (Invoices.InvoiceID = InvoiceLineItems.InvoiceID) WHERE Invoices.InvoiceID IN (SELECT InvoiceSequence FROM InvoiceLineItems WHERE InvoiceSequence > 1) ORDER BY VendorName, InvoiceID, InvoiceSequence, InvoiceLineItemAmount
In dieser Abfrage versuchen wir, Daten aus drei Tabellen abzurufen: „Vendors“, „Invoices“ und „InvoiceLineItems“. Bei der Ausführung stoßen wir jedoch auf den gefürchteten mehrdeutigen Spaltennamenfehler für das Feld „InvoiceID“.
Der Schlüssel zur Lösung Dieses Problem liegt in der expliziten Angabe des Tabellennamens beim Verweis auf die mehrdeutige Spalte. Indem wir den Tabellennamen als Präfix zum Spaltennamen hinzufügen, klären wir, auf welche Tabellenspalte wir uns beziehen.
In unserem Beispiel existiert die Spalte „InvoiceID“ sowohl in „Invoices“ als auch in „InvoiceLineItems“. Tabellen müssen wir die gewünschte Tabelle in der Abfrage wie folgt angeben:
SELECT VendorName, Invoices.InvoiceID, InvoiceSequence, InvoiceLineItemAmount FROM Vendors JOIN Invoices ON (Vendors.VendorID = Invoices.VendorID) JOIN InvoiceLineItems ON (Invoices.InvoiceID = InvoiceLineItems.InvoiceID) WHERE Invoices.InvoiceID IN (SELECT InvoiceSequence FROM InvoiceLineItems WHERE InvoiceSequence > 1) ORDER BY VendorName, Invoices.InvoiceID, InvoiceSequence, InvoiceLineItemAmount
Durch Hinzufügen von „Rechnungen“. Vor „InvoiceID“ geben wir explizit an, dass wir den Wert aus der Spalte „InvoiceID“ der Tabelle „Invoices“ abrufen möchten, wodurch die Mehrdeutigkeit beseitigt wird und SSMS die korrekte Ausführung der Abfrage ermöglicht.
Wenn Sie in SQL auf einen Fehler wegen mehrdeutiger Spaltennamen stoßen, denken Sie immer daran, den Tabellennamen beim Verweisen explizit anzugeben diese Spalte. Dadurch geben Sie dem SQL Server klare Anweisungen und stellen genaue Abfrageergebnisse sicher.
Das obige ist der detaillierte Inhalt vonWie behebt man Fehler wegen mehrdeutiger Spaltennamen in SQL-Joins?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!