sql >> Databasteknik >  >> RDS >> Sqlserver

Frågefel med tvetydigt kolumnnamn i SQL

Vi möter det här felet när vi väljer data från mer än en tabell genom att sammanfoga tabeller och minst en av de valda kolumnerna (det händer också när du använder * för att markera alla kolumner) finns med samma namn i mer än en tabell (våra utvalda/sammanfogade tabeller). I så fall måste vi ange från vilken tabell vi väljer ut kolumn.

Följande är ett exempel på implementering av konceptet som förklaras ovan

Jag tror att du bara har oklarheter i InvoiceID som finns både i InvoiceLineItems och Invoices Andra fält verkar tydliga. Så prova det här

Jag ersätter bara InvoiceID med 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

Du kan använda tablename.columnnae för alla kolumner (i urval, var, gruppera efter och ordning efter) utan att använda något alias. Du kan dock använda ett alias som styrs av andra svar



  1. effektivt sätt att implementera personsökning

  2. Automatisera säkerhetskopiering och underhållsjobb med hjälp av underhållsplan i SQL Server

  3. PostgreSQL returnerar en funktion med en anpassad datatyp

  4. Hur man filtrerar rader utan NULL i en kolumn