【问题标题】:How to select from MySQL where Table name is Variable如何从表名为变量的 MySQL 中进行选择
【发布时间】:2020-04-07 03:40:52
【问题描述】:

我有一种情况,应该从一个集合变量中获取表名,例如:

SET @ID_1 = (SELECT ID FROM `slider` LIMIT 0,1);
SET @Cat = (SELECT Category FROM `slider` LIMIT 0,1);
select * from @Cat where ID = @ID_1

但是这样做 MySQL 会输出错误,所以有人可以告诉我如何实现这一点,因为这些是我在 MySQL 中的初级步骤。

【问题讨论】:

    标签: mysql set tablename


    【解决方案1】:

    您必须使用prepared statement 执行此操作。比如:

    SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1); 
    
    PREPARE stmt1 FROM @s; 
    EXECUTE stmt1; 
    DEALLOCATE PREPARE stmt1; 
    

    【讨论】:

    • 只有当我删除 DEALLOCATE PREPARE stm1 时它才会显示结果;
    • 出色的解决方案。帮助我解决了我遇到的问题,谢谢。
    • DEALLOCATE PREPARE 有什么作用?
    • @FrozenFlame,释放stmt1。如果不释放,可能会遇到语句的最大限制,由max_prepared_stmt_count 变量系统、how you can read here 强制执行。
    • 这在 2018 年仍然有效吗??
    【解决方案2】:

    I got this solution after hours of debugging

    我附上的图片 100% 适用于 mysql

    【讨论】:

    • 欢迎来到stackoverflow。请将代码发布为文本,而不是图像。见How to Answer
    猜你喜欢
    • 2014-01-13
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多