Mysql
 sql >> база данни >  >> RDS >> Mysql

Неизвестна колона в „списък с полета“, когато заместителят на подготвеното изявление е в подзаявка

Последната ви редакция направи въпроса много ясен, така че ще се опитам да отговоря:причината за тази разлика е заместителят.

Както е документирано тук , заместителите могат да се използват само на определени места в заявката. По-специално:

Сега може би сте забелязали, че SELECT ? as x подготвя се добре, но не SELECT nr.x FROM (SELECT ? AS x) AS nr . Защо така? Е, това е най-добре обяснено от анонимен автор в документа на PHP , така че нека копирам/поставя:

Така че просто казано:защото използвате заместител в подзаявка в FROM клауза, MySQL не може да изчисли плана за изпълнение на заявката.

С други думи, тъй като заявката ви винаги ще се променя, няма „шаблон“, който може да бъде подготвен за нея.

Следователно, ако наистина искате да използвате тази заявка, трябва да използвате нормална (неподготвена) заявка или да включите отново емулираните подготвени оператори на PDO.

Като се има предвид това, моля, помислете за различните алтернативи, предлагани в секцията за коментари. Има много по-добри решения за това, което се опитвате да постигнете.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изчислим общата сума в MySQL

  2. Хибернация:Създайте Mysql InnoDB таблици вместо MyISAM

  3. Брой на Mysql брой съвпадения на регулярни изрази за поле

  4. MySQL INSERT INTO с двойно условие за АКО НЕ СЪЩЕСТВУВА

  5. Как създавате подготвени изявления с mysql2 gem?