> 데이터 베이스 > MySQL 튜토리얼 > SQL 조인에서 모호한 열 이름을 어떻게 해결할 수 있습니까?

SQL 조인에서 모호한 열 이름을 어떻게 해결할 수 있습니까?

DDD
풀어 주다: 2024-12-31 21:07:15
원래의
717명이 탐색했습니다.

How Can I Resolve Ambiguous Column Names in SQL Joins?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿