在MySql中嵌套选择查询

时间:2015-02-05 11:42:36

标签: mysql sql nested-query

您好我的数据库中有两个表。假设表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”有没有办法做到这一点而不是写两个查询?

1 个答案:

答案 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的值。