如何将Sql语句查询出来的结果作为一个表名 再次进行查询

   需求:从表里获取数据后得知数据存在哪一个表里后,再获取那个表的数据,所以就遇到了一个表名不固定的情况:

比如根据用户查询不同的表:


 

 

 


 

 

 

 

 例如:如果用户是zhangsan那么根据user_table表找出用户对应的表是t1 则就需要查t1表;

 

  • 此问题解决用存储过程解决
  1. 先给变量赋值
  2. 预定义好sql.
  3. 执行预定义的sql
  4. 释放掉数据库连接

实例如下:

 

SET @tab_name = (SELECT tab from user_table where users = 'zhangsan');--查出当前用户zhangsan对应的表名
SET @result = CONCAT('SELECT * FROM ', @tab_name);--然后将查询语句与查表名的变量进行拼接并将查询出来的结果定义成一个变量
Prepare stmt FROM @result;--预定SQl
Execute stmt;--执行
DEALLOCATE PREPARE stmt;--释放

查询结果如下:

 

 


 

用此方法即可实现!

 

posted @ 2021-03-25 17:52  董七二  阅读(1585)  评论(0)    收藏  举报