我在表列中有一个值列表,我需要将其与表名匹配,最好只使用 SQL 语句。
如果值是静态的,我想 SELECT 语句将是这样的:
SELECT table_name FROM information_schema.TABLES WHERE
match(table_name) against('124512' +'36326' +'23636' IN BOOLEAN MODE)
但是,我需要与来自 SELECT 语句的动态值匹配:
SELECT tableid FROM databaseName.tableOverviewTableName
WHERE template = 'templateName')
上面的表ID包含在我想要的表的table_name中。
这可以通过 SQL 语句实现吗?
您可以通过 Prepare 语句(而不是直接通过查询)执行此操作
SET @tq = (SELECT tableid FROM databaseName.tableOverviewTableName WHERE template = 'templateName'));
SET @stmq = CONCAT('SELECT * FROM ', @tq);
Prepare stmt FROM @stmq;
Execute stmt;
DEALLOCATE PREPARE stmt;