如何在多个表中根据条件查询数据

时间:2022-02-19 02:55:20
现在有30张表,表的结构相同,关系是并列的,想在这30张表中根据一个条件查询数据,因为是30张表太多了。有没有相对简单的查询语句根据条件进行查询?

5 个解决方案

#1


30张表, 按日期划分?
做一个视图, union all 30张表
create view view_all
as 
select * from t1
union all
select * from t2
union all
……

#2


如果我不想建视图有没有其他的办法?请版主赐教

#3


引用 2 楼 zhandanren007 的回复:
如果我不想建视图有没有其他的办法?请版主赐教

动态拼接

#4


如果你的表名也有规律,可以试试用sp_MSforeachtable,比如类似这样写

  create table #t(....)
exec sp_MSforeachtable 'insert into #t(...) select ... from ? where col1=100 ', 
@whereand='and Schema_Id=Schema_id(''DBO'') and o.Name like ''%ORDER%'''

#5


既然表结构相同,可以把30个表名存到一个表中(或者其他办法能遍历到这些表名)然后在游标逐个表处理  把每个表数据全部插入到一个新表里    哎 想想就觉得麻烦    如果是我 也会采用1楼版主得写法。。。谁让我比较懒呢

#1


30张表, 按日期划分?
做一个视图, union all 30张表
create view view_all
as 
select * from t1
union all
select * from t2
union all
……

#2


如果我不想建视图有没有其他的办法?请版主赐教

#3


引用 2 楼 zhandanren007 的回复:
如果我不想建视图有没有其他的办法?请版主赐教

动态拼接

#4


如果你的表名也有规律,可以试试用sp_MSforeachtable,比如类似这样写

  create table #t(....)
exec sp_MSforeachtable 'insert into #t(...) select ... from ? where col1=100 ', 
@whereand='and Schema_Id=Schema_id(''DBO'') and o.Name like ''%ORDER%'''

#5


既然表结构相同,可以把30个表名存到一个表中(或者其他办法能遍历到这些表名)然后在游标逐个表处理  把每个表数据全部插入到一个新表里    哎 想想就觉得麻烦    如果是我 也会采用1楼版主得写法。。。谁让我比较懒呢