请教怎么写跨库查询的SQL语句
比如有10个数据库,每个有10张表,一共100张表,这些表的结构都是一模一样的,现在我想查出name=‘张三’的所有行,改怎么写?...
比如有10个数据库,每个有10张表,一共100张表,这些表的结构都是一模一样的,现在我想查出name=‘张三’的所有行,改怎么写?
展开
3个回答
展开全部
建议写个视图,直接查询多个数据库,速度很成问题的,你可以这样
create view V_Select
(
@name nvarchar(20)
)
as
begin
select a.* from
(
select * from 数据库名.dbo.table1
union all
select * from 数据库名.dbo.table2
.....
)a
where isnull(@name,'')='' or name='张三'
end
说明一下:
因为你要查询10个数据库的表,必须这10个数据库你都可以在此数据库访问的到,这是基本条件
我连接每个表的数据是用union all,这是所有数据均包含,如果你要去掉重复数据,就用union
不明白,就接着问,OK,请采纳
追问
有没有更快的方法,这样的确可行,但是我上面说的只是举例子,实际上数据库和表的数量远远多于我说的,我查了2个数据库就花了6分钟……
追答
你把每个用到的表,全用视图代替,然后我给你写的视图中,把表名替换掉,可以一定程度上加快查询速度
另外一个方法,就是用定时任务来每天把查到的数据导入一个表,这样很快,不过,不能实时更新
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询