Mysql 查询但是动态表名

今天同事提出了一个很有意思的问题,mysql查询语句中,如果表名是动态的怎么去查?有意思,大多情况下,都是条件为动态的,很少遇到表名也是动态的。这便勾起了我的兴趣,那么,让我们康康怎么实现吧!

首先,我想到的能否像动态条件那样,直接拼接呢?答案是肯定的,直接就语法错误了!

查阅资料后,想到使用变量来给表名赋值,从而创建一个动态sql,来实现!具体如下:

首先是先根据条件获取表名,这里我从库里随便抓了个表,具体还是根据业务去获取相应的表名

//1.获取动态表名 并赋值变量
select `TABLE_NAME` into @`TABLE_NAME` from information_schema.TABLES t where TABLE_NAME like ('%info%') limit 1;

其次,创建一个根据业务需求动态sql,注意需要进行判空处理

//2.创建sql,并赋值变量
set @`qry`= if(@`TABLE_NAME` is null,'select null',concat('select * from ',@`TABLE_NAME`));

最后就是执行sql

//3.这是预处理,必不可少,若没有,将无法执行sql
prepare `stmt` from @`qry`;
//4.执行sql
execute `stmt`;

至此,问题得以解决!

posted @ 2023-02-15 16:21  Charon_梦  阅读(627)  评论(0)    收藏  举报