【问题标题】:MySQL: Match against dynamic valuesMySQL:匹配动态值
【发布时间】:2015-01-18 09:01:12
【问题描述】:

我有一个表列中的值列表,我需要与表名进行匹配,最好只使用 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')

上面的 tableid 包含在我想要的表的 table_name 中。

这可以通过 SQL 语句实现吗?

【问题讨论】:

    标签: mysql select string-matching match-against


    【解决方案1】:

    您可以通过 Prepared 语句执行此操作(而不是直接通过查询)

    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;
    

    【讨论】:

    • 也许我做错了什么,但是当我尝试运行上面的代码时,我在“SET @tq...”上收到错误消息“#1242 - 子查询返回超过 1 行”。此外,我需要在匹配表达式中选择的数字。
    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 2021-08-31
    • 2011-04-28
    • 2013-02-20
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多