当前位置: 代码迷 >> Sql Server >> MS SQL多表同字段查询解决思路
  详细解决方案

MS SQL多表同字段查询解决思路

热度:22   发布时间:2016-04-24 10:26:27.0
MS SQL多表同字段查询
假设有一张表
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);
  相关解决方案