【问题标题】:Select a table when table name has been stored as a variable当表名已存储为变量时选择表
【发布时间】:2017-07-12 04:15:06
【问题描述】:

使用 MYSQL,我如何选择一个名称已存储为变量的表?例如,我有 2 个表(T1 和 T2),我想导出 T3:

DECLARE i INT; DECLARE n INT;
DECLARE o VARCHAR(50);    
DECLARE T3 VARCHAR(50);

SET n=(SELECT COUNT(*) FROM `T1`);
i=1
WHILE i<n+1 DO
SET o=(SELECT customer FROM `T1` WHERE IDligne=i); 
SET T3=(SELECT MiddleCat FROM `T2` WHERE customer=o); 
SET x = SELECT * FROM `T3`; 

SET i=i+1;
END WHILE;
END

我想将变量 (x) 设置为等于T3 查询的结果(以检索其他表的名称):

但这显示了一个错误。我应该改用什么查询?

【问题讨论】:

    标签: mysql sql variables select


    【解决方案1】:

    您应该使用准备好的语句。您可以使用会话变量来存储查询结果。在下面的示例中,我将计数查询的结果分配给变量@result

    DECLARE @query VARCHAR(50);
    SET @result := 0;
    SET T3 = (SELECT MiddleCat FROM `T2` WHERE customer=o);
    SET @query = CONCAT('SELECT COUNT(*) INTO @result FROM ', T3);
    PREPARE stmt FROM @query;
    EXECUTE stmt;
    

    高度相关:Using select into local variable and prepared statement in mysql

    【讨论】:

    • 但是如何在我的程序中进一步使用这个准备好的语句的结果。例如作为新变量?
    • @SamanthaAlexandria 一种选择是将查询结果选择到用户变量 q.v 中。我更新的答案。
    【解决方案2】:

    在您的情况下,您可以使用以下任何一种:

     1. Print T3 
     2. Select T3
    

    【讨论】:

      猜你喜欢
      • 2013-11-16
      • 2014-06-09
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      相关资源
      最近更新 更多