您好我的数据库中有两个表。假设表1具有登录名,而表2具有user_info
表格结构
登录
uid:整数
user_name:varchar
密码:varchar
tbl_name:varchar
USER_INFO
id:int
name: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”有没有办法做到这一点而不是写两个查询?
答案 0 :(得分:1)
我认为执行此操作的唯一方法是使用动态语句,因此使用预准备语句可能对您有用:
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;
这将返回id=1
表中tbl_name
列中存储的表中login
的值。