SQL 모호한 열 이름 오류: 자세한 설명
테이블 조인과 관련된 SQL 쿼리로 작업할 때 다음과 같은 경우 오류가 발생할 수 있습니다. 조인된 테이블에 동일한 이름을 가진 여러 열이 있습니다. 이 오류는 데이터베이스에서 열 참조가 속한 테이블을 확인할 수 없기 때문에 발생합니다. 이번 글에서는 이 문제에 대해 자세히 알아보고 해결책을 제시하겠습니다.
다음 쿼리를 고려해보세요.
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
이 쿼리에서는 "InvoiceID"가 존재하기 때문에 오류가 발생합니다. "Invoices" 및 "InvoiceLineItems" 테이블 모두의 " 열입니다. 데이터베이스는 "InvoiceID" 값을 검색하려는 테이블을 식별할 수 없습니다.
이 모호성을 해결하려면 열을 참조할 때 테이블 이름을 지정해야 합니다. 점 표기법이나 별칭을 사용하여 이를 달성할 수 있습니다. 점 표기법에는 다음과 같이 열 이름 앞에 테이블 이름을 붙이는 작업이 포함됩니다.
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
또는 다음과 같이 별칭을 사용할 수 있습니다.
SELECT v.VendorName, i.InvoiceID, il.InvoiceSequence, il.InvoiceLineItemAmount FROM Vendors AS v JOIN Invoices AS i ON (v.VendorID = i.VendorID) JOIN InvoiceLineItems AS il ON (i.InvoiceID = il.InvoiceID) WHERE i.InvoiceID IN (SELECT InvoiceSequence FROM InvoiceLineItems WHERE InvoiceSequence > 1) ORDER BY v.VendorName, i.InvoiceID, il.InvoiceSequence, il.InvoiceLineItemAmount
테이블 이름을 지정하거나 별칭을 사용하여 을 사용하면 참조하는 열을 명시적으로 표시하여 모호성을 해결하고 쿼리를 올바르게 실행할 수 있습니다.
위 내용은 조인 시 SQL의 모호한 열 이름 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!