Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lỗi truy vấn với tên cột không rõ ràng trong SQL

Chúng tôi gặp phải lỗi này khi chọn dữ liệu từ nhiều hơn một bảng bằng cách kết hợp các bảng và ít nhất một trong các cột đã chọn (nó cũng sẽ xảy ra khi sử dụng * để chọn tất cả các cột) tồn tại cùng tên trong nhiều bảng (các bảng đã chọn / đã tham gia của chúng tôi). Trong trường hợp đó, chúng tôi phải xác định bảng chúng tôi đang chọn cột nào.

Sau đây là một ví dụ về triển khai giải pháp của khái niệm được giải thích ở trên

Tôi nghĩ rằng bạn chỉ có sự mơ hồ trong InvoiceID tồn tại cả trong InvoiceLineItemsInvoices Các lĩnh vực khác có vẻ khác biệt. Vì vậy, hãy thử Điều này

Tôi chỉ thay InvoiceID bằng 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

Bạn có thể sử dụng tablename.columnnae cho tất cả các cột (trong lựa chọn, ở đâu, nhóm theo và sắp xếp theo thứ tự) mà không cần sử dụng bất kỳ bí danh nào. Tuy nhiên, bạn có thể sử dụng bí danh theo hướng dẫn của các câu trả lời khác



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chuyển đổi tích tắc sang định dạng ngày tháng?

  2. Làm cách nào để kết nối với MS SQL Server bằng cách sử dụng Inno Setup?

  3. Hiệu suất SQL trên THAM GIA TRÁI OUTER so với KHÔNG TỒN TẠI

  4. Làm cách nào để định dạng một số bằng dấu phẩy trong T-SQL?

  5. Tại sao SQL Server tự động bỏ qua khoảng trống ở cuối?