Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unbekannte Spalte in „Feldliste“, wenn sich der Platzhalter der vorbereiteten Anweisung in der Unterabfrage befindet

Ihre letzte Änderung hat die Frage sehr deutlich gemacht, also werde ich versuchen, eine Antwort zu geben:Die Ursache für diesen Unterschied ist der Platzhalter.

Wie hier dokumentiert , können Platzhalter nur an bestimmten Stellen in der Abfrage verwendet werden. Insbesondere:

Nun ist Ihnen vielleicht aufgefallen, dass SELECT ? as x bereitet gut vor, aber nicht SELECT nr.x FROM (SELECT ? AS x) AS nr . Warum ist das so? Nun, das wird am besten von einem anonymen Autor in der PHP-Dokumentation erklärt , also lass mich kopieren/einfügen:

Also einfach gesagt:weil Sie einen Platzhalter in einer Unterabfrage im FROM verwenden -Klausel kann MySQL den Ausführungsplan der Abfrage nicht berechnen.

Mit anderen Worten, da sich Ihre Abfrage ständig ändert, gibt es keine "Vorlage", die dafür vorbereitet werden kann.

Wenn Sie diese Abfrage wirklich verwenden möchten, müssen Sie daher eine normale (nicht vorbereitete) Abfrage verwenden oder die emulierten vorbereiteten Anweisungen von PDO wieder aktivieren.

Beachten Sie jedoch bitte die verschiedenen Alternativen, die im Kommentarbereich angeboten werden. Es gibt viel bessere Lösungen für das, was Sie erreichen möchten.