SQL 쿼리에서 모호한 열 이름 처리
조인을 통해 여러 테이블의 데이터를 검색할 때 모호한 열을 나타내는 오류 메시지가 나타날 수 있습니다. 이름. 이는 두 개 이상의 조인된 테이블에 동일한 열 이름이 존재하여 쿼리 해석기가 어떤 테이블을 참조해야 할지 불확실할 때 발생합니다.
예를 들어 제공된 쿼리에서 InvoiceLineItems 및 Invoices 모두 송장ID. 쿼리에서 InvoiceID를 검색할 때 SQL Server는 어느 테이블에서 데이터를 검색할지 혼동하게 됩니다.
이 모호성을 해결하려면 참조하는 각 열에 테이블 이름을 지정해야 합니다. 이 경우 다음과 같이 쿼리를 업데이트할 수 있습니다.
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
Invoices.InvoiceID를 지정하면 Invoices 테이블에서 InvoiceID 값을 검색하려고 SQL Server에 명시적으로 알리는 것입니다. 이렇게 하면 모호함이 제거되고 쿼리가 올바르게 실행될 수 있습니다.
또는 테이블 별칭을 사용하여 각 테이블에 고유 식별자를 할당할 수 있습니다. 예를 들어 Invoices를 Inv로, InvoiceLineItems를 ILI로 별칭을 지정하고 이에 따라 쿼리를 업데이트할 수 있습니다.
SELECT VendorName, Inv.InvoiceID, InvoiceSequence, InvoiceLineItemAmount FROM Vendors AS V JOIN Invoices AS Inv ON (V.VendorID = Inv.VendorID) JOIN InvoiceLineItems AS ILI ON (Inv.InvoiceID = ILI.InvoiceID) WHERE Inv.InvoiceID IN (SELECT InvoiceSequence FROM ILI WHERE InvoiceSequence > 1) ORDER BY VendorName, Inv.InvoiceID, InvoiceSequence, InvoiceLineItemAmount
테이블 별칭을 사용하면 열 이름 모호성을 해결하고 쿼리가 올바른 결과를 반환하도록 하는 또 다른 방법을 제공합니다.
위 내용은 SQL 조인에서 모호한 열 이름을 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!