使用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
查询的结果(以检索其他表的名称):
但这显示错误。我应该使用什么查询?
答案 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