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

Lỗi máy chủ SQL 4104:Không thể liên kết số nhận dạng nhiều phần.

Nếu bạn gặp lỗi khi cho bạn biết rằng “Không thể liên kết số nhận dạng nhiều phần.”, Điều đó thường có nghĩa là bạn đang đặt trước một hoặc nhiều cột bằng một bảng không có trong truy vấn của bạn hoặc một bí danh mà bạn chưa thực sự gán cho một bảng.

May mắn thay, thông báo lỗi cho bạn biết số nhận dạng nhiều phần nào đang gây ra sự cố.

Ví dụ

Dưới đây là một ví dụ để minh họa cách sửa lỗi.

SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Kết quả:

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "c.CatName" could not be bound.

Trong ví dụ này, tôi quên thêm bí danh cho Mèo bảng.

Lỗi cũng sẽ xảy ra nếu bạn cố gắng tham chiếu tên bảng sau khi bạn đã cung cấp bí danh.

Như thế này:

SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;

Kết quả:

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "Cats.CatName" could not be bound.

Vì vậy, trong trường hợp này, tôi đã chỉ định chính xác bí danh, nhưng trong ON mệnh đề Tôi đã tham chiếu đến tên bảng thực tế thay vì bí danh.

Giải pháp

Vì vậy, giải pháp là đảm bảo bạn đã chỉ định tất cả các bí danh mà bạn có thể tham chiếu sau này trong truy vấn và cũng để đảm bảo bạn sử dụng các bí danh đó thay vì trực tiếp tên bảng.

Vì vậy, nếu bạn định sử dụng bí danh, như sau:

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Hoặc nếu bạn chọn không sử dụng bí danh, như sau:

SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách ISNUMERIC () hoạt động trong SQL Server

  2. Tạo chỉ mục trên một biến bảng

  3. 10 SP_EXECUTESQL Cần tránh để có SQL động tốt hơn

  4. Tạo tài khoản thư cơ sở dữ liệu (SSMS)

  5. Làm thế nào để xóa dữ liệu lớn của bảng trong SQL mà không có nhật ký?