首页 > 解决方案 > 从表和变量中选择

问题描述

我需要根据用户 ID 从多个表中提取一些数据,并且每个表都是动态附加的,因为它是使用 user_config_ 后跟用户 ID 创建的

所以在这种情况下它将是 user_config_134207

然后,我将不得不使用它来加入主数据库,一旦我知道如何实现这一点,我就可以了。

到目前为止我的查询是:

SELECT max(data)
  from user_config_134207
 where object in (22340) 
   and data not in ('None')
 group 
    by object

如果有意义,我需要能够用变量替换 134207 吗?

标签: mysqlvariables

解决方案


由于您的访问权限受到限制,我想您可以尝试准备好的声明。考虑一下:

/*setting variables as NULL*/
SET @sql = NULL;
SET @val = NULL;

/*setting @val variables with ID value*/
SELECT ID INTO @val FROM users WHERE ID=134207;

/*for checking @val value only. can remove in final query*/
SELECT @val;

/*constructing query and set into @sql*/
SET @sql = CONCAT('SELECT MAX(DATA) FROM user_config_',@val,' WHERE object IN (22340) AND DATA NOT IN ("None") GROUP BY object'); 
    
/*for checking @sql value only. can remove in final query*/
SELECT @sql;

/*prepare, execute then deallocate statement*/
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 

演示小提琴


推荐阅读