嗨,我的数据库中有两个表。假设表 1 有一个登录名,表二有 user_info
表格结构
登录
uid:整数
用户名:varchar
密码:varchar
表名:varchar
用户信息
id:整数
名称:varchar
......
假设登录表中的 uid =1 tble_name 是 user_info
那么如何从一个查询中获取user_info表的内容?
SELECT * FROM ( SELECT login.tbl_name FROM db.login WHERE uid = 1 )as a
但这会返回“user_info”有什么方法可以做到这一点而不是编写两个查询?
最佳答案
我认为做到这一点的唯一方法是使用动态语句,因此也许使用准备好的语句可以为您工作:
SET @id = 1;
SELECT @table := tbl_name from login where uid = @id;
SET @s = CONCAT('SELECT * FROM ', @table, ' WHERE id = ', @id);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
这将返回存储在 login
表的 tbl_name
列中的表中 id=1
的值。
关于mysql - MySql 中的嵌套选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28343038/