求教简单sql查询动态表名
使用的是mysql
有这么系列表
a_1004
a_1005
a_1006
...
1004是10年4月
这个月是4月,怎么写一条sql语句查询a_1004表中的,等到5月,可以查询a_1005表
select concat("a_",(select substring(DATE_FORMAT(Date_add(now(), interval 0 day),'%Y%m'),3,4)));
得到的是 a_1004
怎么样可以查询 这个字符串为表名的表?
谢谢,by phoenix
------解决方案--------------------set @aa=concat('select * from ',"a_",(select substring(DATE_FORMAT(Date_add(now(), interval 0 day),'%Y%m'),3,4)));
prepare qq from @aa;
execute qq;
------解决方案--------------------
MySQL 中SQL语句无法实现动态的使用表名做变量。只能通过PREPARE来实现动态SQL语句。
SQL code
SET @sql = concat(' select * from a_',DATE_FORMAT(now(),'%y%m'));
PREPARE stmt FROM @sql;
EXECUTE stmt1 ;
DEALLOCATE PREPARE stmt1;