这一定是一个很简单的问题,子查询单独返回结果但是复合查询报告:
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_table
ortable_name
。