本文主要介绍MSSQL数据库跨表和跨数据库查询的方法,我们假设有数据库test1和数据库test2。其中test1中有表 table1、table2;test2 中有表 table1。三个表的字段都为为:id、xingming、shijian、shuliang。接下来我们就以上面的条件为例来介绍跨数据库查询和跨表查询的方法。

一、跨数据库
(1)原始:
- SELECT *
 - FROM OPENROWSET('sqloledb',
 - 'DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=ccds',
 - test1.dbo.table1) where xingming='a'
 - UNION all
 - SELECT *
 - FROM OPENROWSET('sqloledb',
 - 'DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=ccds',
 - test2.dbo.table1) where xingming='a'
 
(2)简化:
- SELECT * FROM test1.dbo.table1 where xingming='a'
 - UNION all
 - SELECT * FROM test2.dbo.table1 where xingming='a'
 
注意事项:dbo一定要有,不可以没有。
二、跨表
跨表查询我们在数据库test1内实现,执行以下的代码:
- SELECT * FROM table1 where xingming='a'
 - UNION all
 - SELECT * FROM table2 where xingming='a'
 
这就是UNION ALL 的作用。
如果上面没有看懂,先建好上面的数据库和表,下面有个asp实例,照抄就可以了。
文件名:unionall.asp
- <%sqlStr="provider=sqloledb;data source=127.0.0.1;uid=sa;pwd=;database=test1" '跨库时,数据库名不必指定,如:database=
 - set conn=server.createObject("adodb.connection")
 - conn.open sqlStr
 - set rs=server.createObject("adodb.Recordset")
 - sql=" SELECT * "
 - sqlsql=sql&" FROM test1.dbo.table1 where xingming='a' "
 - sqlsql=sql&" UNION all "
 - sqlsql=sql&" SELECT * "
 - sqlsql=sql&" FROM test2.dbo.table1 where xingming='a'"
 - rs.open sql,conn,1%>
 
<%if not rs.eof then id xingming shijian shuliang - do while not rs.eof%>
 <%rs.movenext <%=rs("id")%> <%=rs("xingming")%> <%=rs("shijian")%> <%=rs("shuliang")%> - loop
 - end if
 - rs.close
 - set rs=nothing
 - conn.close
 - set conn=nothing%>
 
关于MSSQL数据库跨数据库查询和跨表查询的方法就介绍到这里,如果您有更好的方法,欢迎您与我们分享,谢谢!
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号