mysql - 如何在select语句中获取变量值作为表名

标签 mysql stored-procedures

SET Project_List_val=CONCAT(Project_Number_val,'_List');
Insert Into test (Manthan_Panel_Id) select Manthan_Panel_Id from Project_List_val where Project_Number_val='9';

在插入语句中有一个名为“Project_List_val”的变量,它由上述步骤中连接的表名组成。此语句没有将变量的内容作为表名,而是将“Project_List_val”作为表名并给出表未找到错误。

有什么建议吗?

最佳答案

默认情况下,您无法参数化表名和列名,因此您需要为此创建动态 SQL

SET @Project_List_val = CONCAT(Project_Number_val, '_List');
SET @projNum = 9;
SET @sql = CONCAT(' INSERT INTO test (Manthan_Panel_Id)
                    SELECT Manthan_Panel_Id 
                    FROM ', @Project_List_val, ' 
                    WHERE Project_Number_val = ?');

PREPARE stmt FROM @sql;
EXECUTE stmt USING @projNum;
DEALLOCATE PREPARE stmt;

关于mysql - 如何在select语句中获取变量值作为表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828838/

相关文章:

SQL编译

MYSQL 函数 "Error Code: 1242 subquery returns more than 1 row"但我没有子查询

sql - 用累积结果更新表记录

stored-procedures - Firebird ,解密存储过程?

sql - 在存储过程上使用提取方法

mysql - 从 MVC 应用程序创建新数据库

java - 实际上没有插入到 MySQL 中,但是自动增量字段在增加?

php - SELECT * FROM (表名) WHERE (数组值) = '1'

mysql - phpmyadmin 在 1440 秒后注销

mysql - 为什么 perl DBI 在跟踪语句返回 1 时返回 0 行