mysql - 从表和变量中选择
问题描述
我需要根据用户 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 吗?
解决方案
由于您的访问权限受到限制,我想您可以尝试准备好的声明。考虑一下:
/*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;
推荐阅读
- javascript - 本地字体与在线字体?
- java - 如何使用检测在 Java 代码中设置断点?
- javascript - 何时调用 JavaScript 切换函数?
- javascript - 使用命令处理程序的 Discord.js 冷却时间剩余
- python - 初始化与 Telethon 的连接时出现问题
- python-3.x - IntelliJ Pycharm 插件:将变量移动到类中
- javascript - Java中的无效函数结果
- windows - “远程计算机是 AAD”但“登录尝试失败”
- elasticsearch - 有没有办法更改 elasticsearch 7 的 /etc/default/elasticsearch 文件?
- python - 如何修复 python-tesseract OCR 中的字母混淆?