MSSQL数据库跨表和跨数据库查询方法简介

数据库 SQL Server
本文通过实例的方式分别介绍了MSSQL数据库的跨数据库查询和跨表查询,希望会对读者有所帮助。

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

一、跨数据库

(1)原始:

 

  1. SELECT *  
  2.  
  3.   FROM OPENROWSET('sqloledb',  
  4.  
  5.         'DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=ccds',    
  6.  
  7.         test1.dbo.table1)  where xingming='a' 
  8.  
  9.   UNION   all    
  10.  
  11. SELECT *  
  12.  
  13.   FROM OPENROWSET('sqloledb',  
  14.  
  15.         'DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=ccds',    
  16.  
  17.         test2.dbo.table1)  where xingming='a' 

 

(2)简化:

 

  1. SELECT * FROM test1.dbo.table1  where xingming='a' 
  2.  
  3.   UNION   all    
  4.  
  5. SELECT * FROM test2.dbo.table1  where xingming='a' 

 

注意事项:dbo 一定要有,不可以没有。

二、跨表

跨表查询我们在数据库test1内实现,执行以下的代码:

 

  1. SELECT * FROM table1  where xingming='a' 
  2.  
  3.   UNION   all    
  4.  
  5. SELECT * FROM table2  where xingming='a' 

 

这就是UNION ALL 的作用。

如果上面没有看懂,先建好上面的数据库和表,下面有个asp实例,照抄就可以了。

文件名:unionall.asp

 

  1. <html> 
  2.  
  3. <head> 
  4.  
  5. <meta http-equiv="Content-Language" content="zh-cn"> 
  6.  
  7. </head> 
  8.  
  9. <body> 
  10.  
  11. <%sqlStr="provider=sqloledb;data source=127.0.0.1;uid=sa;pwd=;database=test1"    '跨库时,数据库名不必指定,如:database=  
  12.  
  13. set conn=server.createObject("adodb.connection")  
  14.  
  15. conn.open sqlStr  
  16.  
  17. set rs=server.createObject("adodb.Recordset")  
  18.  
  19. sql="   SELECT * " 
  20.  
  21. sqlsql=sql&" FROM test1.dbo.table1  where xingming='a' "  
  22.  
  23. sqlsql=sql&" UNION all "  
  24.  
  25. sqlsql=sql&" SELECT * "  
  26.  
  27. sqlsql=sql&" FROM test2.dbo.table1  where xingming='a'"  
  28.  
  29. rs.open sql,conn,1%> 
  30.  
  31. <div align="center"> 
  32.  
  33.  <table border="1" style="border-collapse: collapse" width="388" bordercolor="#0000FF" id="table1"> 
  34.  
  35.   <tr> 
  36.  
  37.    <td height="28" bgcolor="#CCCCCC" align="center"><b>id</b></td> 
  38.  
  39.    <td width="135" height="28" bgcolor="#CCCCCC" align="center"><b>xingming</b></td> 
  40.  
  41.    <td width="109" height="28" bgcolor="#CCCCCC" align="center"><b>shijian</b></td> 
  42.  
  43.    <td width="89" height="28" bgcolor="#CCCCCC" align="center"><b>shuliang</b></td> 
  44.  
  45.   </tr><%if not rs.eof then  
  46.  
  47.   do while not rs.eof%> 
  48.  
  49.  <tr> 
  50.  
  51.    <td height="28" align="center"><%=rs("id")%></td> 
  52.  
  53.    <td width="135" height="28" align="center"><%=rs("xingming")%></td> 
  54.  
  55.    <td width="109" height="28" align="center"><%=rs("shijian")%></td> 
  56.  
  57.    <td width="89" height="28" align="center"><%=rs("shuliang")%></td> 
  58.  
  59.   </tr><%rs.movenext  
  60.  
  61.   loop  
  62.  
  63.   end if  
  64.  
  65. rs.close  
  66.  
  67. set rs=nothing 
  68.  
  69. conn.close  
  70.  
  71. set conn=nothing%> 
  72.  
  73.  </table> 
  74.  
  75. </div> 
  76.  
  77. </body> 
  78.  
  79. </html> 

 

关于MSSQL数据库跨数据库查询和跨表查询的方法就介绍到这里,如果您有更好的方法,欢迎您与我们分享,谢谢!

【编辑推荐】

  1. 巧用DAC解决SQL Server登录失败的问题
  2. 如何将系统监视器数据记录到SQL Server
  3. 用FOR XML PATH将查询结果以XML输出
  4. 使用SQL Trace来实现SQL Server的跟踪操作
  5. CTE和WITH AS短语结合使用提高SQL查询性能
责任编辑:赵鹏 来源: CSDN博客
相关推荐

2009-01-27 21:00:00

服务器数据库SQL Server

2009-03-23 09:05:01

2010-11-03 11:36:53

访问DB2表

2011-08-29 15:21:30

2011-07-28 17:02:59

MYSQL数据库跨表更新数据并合

2021-10-13 09:46:11

数据库工具技术

2010-09-30 09:11:01

2011-08-29 14:44:56

DBLINK

2017-07-18 17:07:40

数据库 MyCATJoin

2015-08-21 12:59:38

Oracle数据库

2011-03-14 13:43:56

2011-03-30 14:08:01

Entity Fram跨数据库查询

2009-01-15 09:24:03

Sybase数据库引擎

2010-05-21 17:51:58

MySQL数据库

2023-11-30 07:15:57

MySQL数据库

2012-10-19 10:21:07

数据库负载均衡mssqlserver

2009-01-15 13:52:16

数据库管理开销

2010-10-27 17:11:35

oracle查询

2010-05-24 18:49:13

MySQL数据库

2010-06-04 18:32:48

MySQL数据库
点赞
收藏

51CTO技术栈公众号