假设有一张表
tb1:
field1 field2 field3 field4
Y Y Y K
然后我这个数据库里可能还有N个与该表结构完全一模一样的表(就表名不一样)
我能否动态实现如下的多表查询呢?
select * from tb1 where field4 = ‘k’
union all
select * from tb2 where field4 = ‘k’。。。
[遍历该数据库表名,判断前几位为和已知要查询的表名一致的表(比如MYTABLE_1,MYTABLE_2,MYTABLE_3,...这样就判断前面几位是否为'MYTABLE'),组装SQL语句进行查询]
或者可以直接判断结构呢?
万分感谢!
------解决方案--------------------
declare @sql varchar(8000)
select @sql = isnull(@sql + ' union all ' , '' ) + 'select * from ' +name+ ' where filied4=''k'' ' from sysobjects where type='U'
exec(@sql)
------解决方案--------------------
declare @SQL varchar(max)='';
select @SQL=@SQL+'select * from '+name+' where field4 =''k'' union all ' from sys.tables where left(name,'8')='MYTABLE_' ;
set @SQL=left(@SQL,LEN(@SQL)-10);
exec(@SQL);