请教怎么写跨库查询的SQL语句

比如有10个数据库,每个有10张表,一共100张表,这些表的结构都是一模一样的,现在我想查出name=‘张三’的所有行,改怎么写?... 比如有10个数据库,每个有10张表,一共100张表,这些表的结构都是一模一样的,现在我想查出name=‘张三’的所有行,改怎么写? 展开
 我来答
Milo_WuW
2013-11-20 · 超过30用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:66.9万
展开全部

建议写个视图,直接查询多个数据库,速度很成问题的,你可以这样

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


说明一下:

  1. 因为你要查询10个数据库的表,必须这10个数据库你都可以在此数据库访问的到,这是基本条件

  2. 我连接每个表的数据是用union all,这是所有数据均包含,如果你要去掉重复数据,就用union


不明白,就接着问,OK,请采纳

追问
有没有更快的方法,这样的确可行,但是我上面说的只是举例子,实际上数据库和表的数量远远多于我说的,我查了2个数据库就花了6分钟……
追答
你把每个用到的表,全用视图代替,然后我给你写的视图中,把表名替换掉,可以一定程度上加快查询速度
另外一个方法,就是用定时任务来每天把查到的数据导入一个表,这样很快,不过,不能实时更新
szm341
2013-11-20 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5159万
展开全部
没有办法一次性把所有库都查一遍,你只能一个库一条语句的写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
嵩193
2013-11-20
知道答主
回答量:7
采纳率:0%
帮助的人:2.8万
展开全部
数据库不一样建立的连接就不一样,你可以一个一个数据库查下组合到一起吗.如果表明都一样的话可以在建立数据库连接来个for循环吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式