本文通过实例的方式分别介绍了MSSQL数据库的跨数据库查询和跨表查询,希望会对读者有所帮助。
本文主要介绍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%>
id | xingming | shijian | shuliang |
<%=rs("id")%> | <%=rs("xingming")%> | <%=rs("shijian")%> | <%=rs("shuliang")%> |