mysql - MySql 中的嵌套选择查询

标签 mysql sql subquery

嗨,我的数据库中有两个表。假设表 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/

相关文章:

python - MySQL + Python :Using auto increment primary key

mysql - sql请求太长...如何简化?

mysql传递数据到in

php - Database_Exception [2]:mysqli_connect():服务器向客户端发送了未知的字符集(255)。请向开发商报告

PHP/MySQL 更好的用户搜索

mysql - 如何使用单个查询查询多个表

sql - PostgreSQL 中的全文搜索与模糊搜索相结合

php - MySQL 从 3 个表中选择并获取所有成员(member)在特定日期的出勤时间

mysql - 在mysql中的连接表的子选择中获取具有相同值的字段

如果子查询为空,MySQL 问题