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 * "
sql=sql&" FROM test1.dbo.table1  where xingming='a' "
sql=sql&" UNION all "
sql=sql&" SELECT * "
sql=sql&" FROM test2.dbo.table1  where xingming='a'"
rs.open sql,conn,1%>


 
  
   
   
   
   
  <%if not rs.eof then
  do while not rs.eof%>
  
   
   
   
   
  <%rs.movenext
  loop
  end if
rs.close
set rs=nothing
conn.close
set conn=nothing%>
 
idxingmingshijianshuliang
<%=rs("id")%><%=rs("xingming")%><%=rs("shijian")%><%=rs("shuliang")%>



再看不懂,买块豆腐自杀撞死。

你可能感兴趣的:(站长手记)