Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Грешка в заявката с двусмислено име на колона в SQL

Сблъскваме се с тази грешка, когато избираме данни от повече от една таблици чрез обединяване на таблици ипоне една от избраните колони (ще се случи и когато използвате *, за да изберете всички колони) съществуват със същото име в повече от една таблици (нашите избрани/съединени таблици). В този случай трябва да посочим от коя таблица избираме колона.

Следва примерна реализация на решение на концепцията, обяснена по-горе

Мисля, че имате неяснота само в InvoiceID който съществува и в InvoiceLineItems и Invoices Други полета изглеждат различни. Така че опитайте това

Просто замествам InvoiceID с Invoice.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

Можете да използвате tablename.columnnae за всички колони (в избор, където, групиране по и подреждане по), без да използвате псевдоним. Въпреки това можете да използвате псевдоним, като се ръководите от други отговори



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите дали изчислената колона е „постоянна“ в SQL Server

  2. Лесното ръководство за това как да използвате подзаявки в SQL Server

  3. Грешки в SQL Server при импортиране на CSV файл, въпреки че varchar(MAX) се използва за всяка колона

  4. SQL Server 2016:Създайте таблица от SQL скрипт

  5. Какво се случва с идентификатора на първичния ключ, когато надхвърли лимита?