Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nieznana kolumna w 'liście pól', gdy w podzapytaniu znajduje się symbol zastępczy przygotowanej instrukcji

Twoja ostatnia zmiana sprawiła, że ​​pytanie było bardzo jasne, więc spróbuję odpowiedzieć:przyczyną tej różnicy jest symbol zastępczy.

Jak udokumentowano tutaj , symbole zastępcze mogą być używane tylko w określonych miejscach zapytania. W szczególności:

Być może zauważyłeś, że SELECT ? as x przygotowuje się dobrze, ale nie SELECT nr.x FROM (SELECT ? AS x) AS nr . Dlaczego? Najlepiej wyjaśnia to anonimowy autor dokumentu PHP , więc pozwól mi skopiować/wkleić:

Mówiąc prosto:ponieważ używasz symbolu zastępczego w podzapytaniu w FROM klauzula, MySQL nie może obliczyć planu wykonania zapytania.

Innymi słowy, ponieważ Twoje zapytanie będzie się zawsze zmieniać, nie ma „szablonu”, który można by na nie przygotować.

Dlatego jeśli naprawdę chcesz użyć tego zapytania, musisz użyć normalnego (nieprzygotowanego) zapytania lub ponownie włączyć emulowane przygotowane instrukcje PDO.

Biorąc to pod uwagę, proszę rozważyć różne alternatywy oferowane w sekcji komentarzy. Istnieją znacznie lepsze rozwiązania dla tego, co próbujesz osiągnąć.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz, gdzie liczba jednego pola jest większa niż jeden

  2. Jak wygenerować dynamiczną tabelę sekwencji w MySQL?

  3. docker-compose:ponowna inicjalizacja bazy danych MySQL za każdym razem

  4. Zaznaczyć wszystkie zduplikowane wiersze na podstawie jednej lub dwóch kolumn?

  5. Najlepszy sposób na przechowywanie wiadomości czatu w bazie danych?