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`;
至此,问题得以解决!
本文来自博客园,作者:Charon_梦,转载请注明原文链接:https://www.cnblogs.com/charon-m/p/17123485.html

浙公网安备 33010602011771号