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

Lỗi cột trùng lặp trong MySQL chỉ khi truy vấn được bao bọc dưới dạng truy vấn con

Lý do bạn gặp lỗi là do răng cưa AS X . Nhưng vấn đề thực sự là bạn đã sử dụng * , thay vì liệt kê các trường bạn muốn.

Trong truy vấn đầu tiên, SELECT * thực sự tạo ra các trường như:

A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted

Điều này hoạt động tốt, trừ khi bạn cố gắng tham chiếu trực tiếp đến một trường bằng tên của nó và không sử dụng bí danh của nó. Dù bằng cách nào thì công cụ SQL của bạn sẽ không gặp sự cố với điều này, dù bạn đang làm gì với tập kết quả vẫn có thể gặp sự cố.

Tuy nhiên, khi bạn di chuyển truy vấn của mình thành truy vấn con và đặt bí danh thì kết quả AS X , sau đó bạn kết thúc với:

X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted

Bây giờ bạn có thể thấy lý do tại sao nó phàn nàn. Bạn có thể hiểu tại sao việc sử dụng * cũng không tốt , bởi vì sự kết hợp này có thể hoạt động trong một khoảng thời gian, và sau đó bạn thêm trường mới vào bảng hiện có, trường đó giống với một bảng khác và nói rằng, mọi truy vấn bạn đã viết với cả hai bảng này, bây giờ cần phải được viết lại.



  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 thêm tệp jar trình điều khiển mysql trong eclipse

  2. MySQL chọn nơi thuộc tính trường JSON có giá trị

  3. Sự cố với các ký tự UTF-8; những gì tôi thấy không phải là những gì tôi đã lưu trữ

  4. PHP:Truy xuất hình ảnh từ MySQL Blob trực tiếp vào thẻ <img>

  5. Tự động cắt các chuỗi theo độ dài thích hợp khi chèn