Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kolom tidak dikenal di 'daftar bidang' ketika placeholder pernyataan yang disiapkan ada di subquery

Hasil edit terakhir Anda membuat pertanyaan menjadi sangat jelas, jadi saya akan mencoba menjawab:penyebab perbedaan ini adalah placeholder.

Seperti yang didokumentasikan di sini , placeholder hanya dapat digunakan di tempat tertentu dalam kueri. Khususnya:

Sekarang Anda mungkin telah memperhatikan bahwa SELECT ? as x mempersiapkan dengan baik, tetapi tidak SELECT nr.x FROM (SELECT ? AS x) AS nr . Mengapa demikian? Hal ini paling baik dijelaskan oleh seorang penulis anonim di dokumen PHP , jadi izinkan saya menyalin/menempel:

Sederhananya:karena Anda menggunakan placeholder di subquery di FROM klausa, MySQL tidak dapat menghitung rencana eksekusi kueri.

Dengan kata lain, karena kueri Anda akan selalu berubah, tidak ada "templat" yang dapat disiapkan untuk itu.

Oleh karena itu, jika Anda benar-benar ingin menggunakan kueri ini, Anda perlu menggunakan kueri normal (tidak disiapkan), atau mengaktifkan kembali pernyataan siap yang ditiru PDO.

Karena itu, tolong, pertimbangkan berbagai alternatif yang ditawarkan di bagian komentar. Ada banyak solusi yang lebih baik untuk apa yang ingin Anda capai.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan persen (%) dalam LIKE tanpa diperlakukan sebagai wildcard?

  2. Bagaimana saya bisa mengatasi ketidakcocokan dengan sql_mode=only_full_group_by di laravel fasih?

  3. Format tanggal penyisipan mysql PHP

  4. MySQL:cara mendapatkan x jumlah hasil per pengelompokan

  5. Bagaimana saya bisa mengembalikan output tabel pivot di MySQL?