将表名存储为变量时选择表

时间:2017-07-12 04:15:06

标签: mysql sql variables select

使用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查询的结果(以检索其他表的名称):

但这显示错误。我应该使用什么查询?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在您的情况下,您可以使用以下任一方式:

 1. Print T3 
 2. Select T3