跨数据库连表查询sql语句怎么写

跨数据库连表查询sql语句怎么写,第1张

这样应该符合你要求:

select

fdepartmentid,departname

from

AT_EMP,opendatasource('SQLOLEDB','Data

Source=数据库B的IP;User

ID=sa;

Password=数据库B密码')数据库dept

where

fdepartmentid

=

departid

---或者写你需要的条件

远程数据库 *** 作:opendatasource('SQLOLEDB','Data

Source=数据库B的IP;User

ID=sa;

Password=数据库B密码')数据库dept

如果是外连接:select 列名1,列名2

from 表1 left outer join 表2

on 表1id = 表2id

如果是等值连接:select 列名1,列名2

from 表1,表2

where 表1id = 表2id

结构化查询语言简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

一般情况下是一条语句来的快。如果表2的数据比表1多出几个数量级的话,并且表2中该id字段有索引,则有可能使用多次查询会快点。

一次查询的优点是只需要一次连接,数据库查询的时候,连接是个耗时的 *** 作。缺点是如果两个表数据多,则中间结果集太大,需要较多的内存资源。

多次查询的优缺点和一次查询正好反过来。另外多次查询也可以在程序中对每一次查询的中间结果做处理,这是一个灵活性。

SQL语言

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

二、CROSS JOIN(创建笛卡尔积) 对两张表通过交叉联合产生第三张返回结果集的表。相当于普通的连接。 三、INNER JOIN(内连接) 内连接就相当于普通的CROSS JOIN,只是格式不一样,INNER JOIN在后面有一个ON子句(相当于WHERE)的搜索条件,用于过滤返回的行。 四、OUTER JOIN (外连接) select from ta outer join tb on (tac1=tbc1) outer join告诉DBMS生成结果表,在此表中不仅带有相关(tac1=tbc1)行对,而且还有来自两个源表中任一表的不匹配的行。 五、LEFT OUTER JOIN(左连接) RIGHT OUTER JOIN(右连接) select from ta left outer join tb on (tac1=tbc1) select from ta right outer join tb on (tac1=tbc1) left outer join(left join) 告诉DBMS生成包括联合行和任何不匹配的行的结果表,但是不匹配的行系来自查询的FROM子句中LEFT OUTER JOIN关键词左边的表中。 right outer join(right join)与left outer join(left join)刚好相反。 六、FULL OUTER JOIN(全连接) FULL OUTER JOIN 返回组合了LEFT OUTER JOIN 和RIGHT OUTER JOIN结果的表。 以下是Inner Join及Outer Join的具体介绍: 在一个正规化的数据库环境中, 我们常会碰到这款情形: 所需的资料并不是放在同一个资料表中, 在这个时候, 你就要用到 Join。 当然Join 如何将不同的数据库的资料结合, 还要看你如何使用它, 一共有四种不同的 Join 的方式, 在这篇文章中我们将为你介绍 Inner Join 及 Outer Join 以及其应用。 Inner Join (自然连接)Inner Join 应该是最常用的 Join 方式, 它只会传回符合 Join 规则的纪录, 还是先来看看语法: Select <要选择的字段> From <主要资料表> <次要资料表> [On ] 现在我们利用 MS SQL Server 的内建数据库看一个实例。 Select ProductId, ProductName, SupplierId From Products 从Products 产品资料表中取出三个字段, 分别是产品代码, 产品名称, 供货商代码, 但查询出来的结果保证让你的老板很不满意, 因为供货商代码对于人类实在是无什么意义, 这个时候 Join 就可以帮上忙了, 藉由 Join Suppliers 这个资料表我们便可以查询到供货商名称Select ProductId, ProductName, SuppliersSupplierIdFrom Products 首先要拿掉 Products 资料表的 Foreign Key, 否则没有法度在 Products 资料表新增一笔 SupplierId 没有对映到 Suppliers 资料表的纪录, 要知影一个资料表的 Constraint 你可以执行 SQL 内建的 sp_helpconstraint , 在 QA 执行 sp_helpconstraint Products 接下来删除 FK_Products_Suppliers 这个 Foreign Key Alter Table Products Drop Constraint FK_Products_Suppliers 再来新增一笔纪录于 Products 资料表, SupplierId 使用 50 是因为它并没有对映到 Suppliers 资料表中的记录 Insert Into Products (ProductName,SupplierId,CategoryId) values ('Test Product','50','1') 现在我们再执行头前的查询, 只是将 Inner Join 改为 Left Outer Join Select ProductId, ProductName, SuppliersSupplierId From Products Left Outer Join Suppliers ProductsSuppliers = SuppliersSupplierId 比较一下两种 Join 方式的查询结果, 你应该就会知影其中的差别! 再来看看 Right Outer Join, 请新增下底这笔记录 Insert Into Suppliers (CompanyName) values ('LearnASP') 现在请使用 Right Out Join 来作查询, 比较看看查询的结果和 Inner Join 有什么不同! 寻找不相符纪录 这里我们来看看如何使用 Out Join 来找不相符纪录, 可能是有子纪录却没有父纪录或是颠倒过来 Select SuppliersCompanyName From Products Right Join Suppliers On ProductsSupplierId = SuppliersSupplierId Where ProductsSupplierId is Null 执行结果你会找到一笔资料为 LearnASP, 该笔供货商资料存在, 但基本上已经没有产品是来自这个供货商, 想象一下如果不用 Outer Join 你要怎么以一个 SQL 指令完成同一查询结果! 知道 Outer Join 的好用了吧! 再执行 Select ProductsProductName From Products Left Join Suppliers On ProductsSupplierId = SuppliersSupplierId Where SuppliersSupplierId is Null 这个查询结果你会发现 Test Product 这项产品竟然找不到供货商的资料!

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

现有info_200601,info_200602至info_20060X个表,其表是动态生成的,表结构相同,只是表名不同,请问如果用循环语句一次查出这些表中的内容,并以sn字段做降序

解析:

只要循环查询字符串里面FROM子句后面的表名就可以了。

如C#中:

string table="info_20060";

string sql="select ";

for(int i=1;i<=X;i++)

{

string temp=table+iToString();

sql =sql+ temp+"";

if(i<X) sql+= ",";

}

sql+=" from ";

for(int i=1;i<=X;i++)

{

string temp=table+iToString();

sql += temp;

if (i < X) sql += ",";

}

sql=sql+" order by info_200601sn desc";

最后的sn不知道你什么意思。

可以使用笛卡尔积的方式联表查询

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 [1] 。

举例:设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB

笛卡尔积的符号化为:

A×B={(x,y)|x∈A∧y∈B}

例如,A={a,b}, B={0,1,2},则

A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}

select distinct Auuid from onecard_parking_cardhistory as A left join onecard_parking_bill as B

on Auuid=Buuid order by outgoingtime desc incoming

以上就是关于跨数据库连表查询sql语句怎么写全部的内容,包括:跨数据库连表查询sql语句怎么写、SQL怎么连接查询2个表、SQL连表查询跟一个个表查询那个快各有什么优点和缺点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10199076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存