Mariadb

我有一個返回結果的正確子查詢,但是當我將它用作“IN”子句時,我收到錯誤 1064

  • March 25, 2021

這一定是一個很簡單的問題,子查詢單獨返回結果但是複合查詢報告:

ERROR 1064 (42000):您的 SQL 語法有錯誤;檢查與您的 MariaDB 伺服器版本相對應的手冊,以獲取正確的語法,以便在第 1 行的 ’table where table in (select table_name from information_schema.tables where tab’ 附近使用

這是查詢:

select * 
from table 
where table in 
   (select table_name 
    from information_schema.tables 
    where table_schema='my_database' 
    limit 1);

我也沒有限制地嘗試過,這是我的第一次嘗試:

select * 
from table 
where table in 
   (select table_name 
    from information_schema.tables 
    where table_schema='my_database');

你不能SELECT喜歡這樣,你動態SELECT的表名。這就是為什麼它不起作用。子選擇有效,但是.. 嘗試用常量(即已知)名稱替換子選擇,但它仍然不起作用。

對於這樣的事情,您要麼需要 if then else 流或動態 SQL,要麼在應用程序端執行。

table是一個保留字,所以它不被認為是一個標識符,而是語法的一部分。如果你有一個 tabletable和一個名為table(confusing) 的列,你必須用像這樣的倒引號來引用它們:table

盡量避免在表和列標識符上使用保留字,例如my_tableor table_name

引用自:https://dba.stackexchange.com/questions/287337