我正在尝试根据用户输入查询特定表,并想查询包含该用户输入作为名称中的search_id的表。例如,表名称的结构为run_000000_search_000000_lda_000000
,而我想获得与它们放入的表具有相同search_id的表。
我知道在Where子句上使用“ LIKE”时,您可以获得名称中包含特定字符串或整数的列。但是,我没有发现将其与“ FROM”子句一起使用。
针对search_id 50的特定硬编码查询
SELECT *
FROM `run_000044_search_000050_lda_000366`;
总而言之,我如何获得与用户放入的表具有相同search_id的表。另外,尝试使用run和lda来形成完整的表名也是行不通的,因为两者之间没有明显的模式这三个名字。
我也可以使用动态sql,但不确定如何做。
答案 0 :(得分:1)
在线搜索后,我终于找到了解决方案。 infomation_schema.tables包含一列将是一个表名。在这里,您可以查询表的全名,并在另一个查询中使用它。我认为,完整的示例可以使您更容易理解:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%_search_000050_lda_%';
SELECT * FROM INFROMATION_SCHEMA.TABLES
^选择表将包含所有表名和
WHERE TABLE_NAME LIKE '%_search_000050_lda_%';
^在所有表中搜索引号中的内容。用表所需的Like语句替换'%_seach_000050_lda _%'
答案 1 :(得分:0)