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

Cột không xác định trong 'danh sách trường' khi trình giữ chỗ của câu lệnh đã chuẩn bị nằm trong truy vấn con

Chỉnh sửa mới nhất của bạn đã làm cho câu hỏi trở nên rất rõ ràng, vì vậy tôi sẽ cố gắng trả lời:nguyên nhân của sự khác biệt này là trình giữ chỗ.

Như được ghi lại tại đây , trình giữ chỗ chỉ có thể được sử dụng ở một số vị trí nhất định trong truy vấn. Cụ thể:

Bây giờ bạn có thể nhận thấy rằng SELECT ? as x chuẩn bị tốt, nhưng không phải SELECT nr.x FROM (SELECT ? AS x) AS nr . Tại sao vậy? Điều này được giải thích tốt nhất bởi một tác giả ẩn danh trên tài liệu PHP , vậy hãy để tôi sao chép / dán:

Nói một cách đơn giản:bởi vì bạn đang sử dụng trình giữ chỗ trong truy vấn con trong FROM , MySQL không thể tính toán kế hoạch thực thi của truy vấn.

Nói cách khác, vì truy vấn của bạn sẽ luôn thay đổi, nên không có "mẫu" nào có thể được chuẩn bị cho nó.

Do đó, nếu bạn thực sự muốn sử dụng truy vấn này, bạn cần sử dụng truy vấn bình thường (không chuẩn bị) hoặc bật lại các câu lệnh chuẩn bị được mô phỏng của PDO.

Điều đó đang được nói, xin vui lòng, hãy xem xét các lựa chọn thay thế khác nhau được cung cấp trong phần nhận xét. Có nhiều giải pháp tốt hơn cho những gì bạn đang cố gắng đạt đượ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. Truy cập dữ liệu từ servlet

  2. Liên kết dự án không hoạt động trên Máy chủ Wamp

  3. Cách thay đổi giá trị tăng tự động của cơ sở dữ liệu MySQL / MariaDB

  4. vòng lặp mysql cho kết quả là php bên ngoài truy vấn mysql

  5. Hướng dẫn thiết kế cơ sở dữ liệu cho cuộc thăm dò và khảo sát trong MySQL