0

嗨,我的数据库中有两个表。假设表 1 的名称为 login,表 2 的名称为 user_info

表结构

登录

uid : 整数

用户名:varchar

密码:varchar

tbl_name : varchar

用户信息

编号:整数

名称: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”,有什么方法可以代替编写两个查询?

4

1 回答 1

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表中的值。

于 2015-02-05T12:23:22.687 回答