Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd zapytania z niejednoznaczną nazwą kolumny w SQL

Mamy do czynienia z tym błędem, gdy wybieramy dane z więcej niż jednej tabeli łącząc tabele i co najmniej jedną z wybranych kolumn (zdarzy się to również, gdy użyjesz * do wybrania wszystkich kolumn) istnieje pod tą samą nazwą w więcej niż jednej tabeli (nasze wybrane/połączone stoły). W takim przypadku musimy określić, z której tabeli wybieramy kolumnę.

Poniższy przykład to przykładowa implementacja rozwiązania opisanego powyżej

Myślę, że masz niejednoznaczność tylko w InvoiceID który istnieje zarówno w InvoiceLineItems i Invoices Inne dziedziny wydają się odrębne. Więc spróbuj tego

Po prostu zamieniam InvoiceID na Invoices.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

Możesz użyć nazwy_tabeli.kolumnae dla wszystkich kolumn (w zaznaczeniu,gdzie,grupuj według i porządkuj według) bez używania aliasów. Możesz jednak użyć aliasu zgodnie z innymi odpowiedziami



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podzapytanie programu SQL Server zwróciło więcej niż 1 wartość. Nie jest to dozwolone, gdy podzapytanie następuje po =, !=, <, <=,>,>=

  2. Zgrupowana agregacja ciągów / LISTAGG dla SQL Server

  3. Korzystanie z pamięci masowej Intel Optane w programie SQL Server

  4. Analiza MS SQL Server dla tych, którzy widzą go po raz pierwszy

  5. Importuj/eksportuj bazę danych za pomocą SQL Server Server Management Studio