两张表在不同的数据库,如何关联查询?
mysql支持多个库中不同表的关联查询,你可以随便链接一个数据库
然后,sql语句为:
select from db1table1 left join db2table2 on db1table1id = db2table2id
只要用数据库名加上""就能调用相应数据库的数据表了
数据库名表名
扩展资料mysql查询语句
1、查询一张表: select from 表名;
2、查询指定字段:select 字段1,字段2,字段3from 表名;
3、where条件查询:select 字段1,字段2,字段3 frome 表名 where 条件表达式;
例:select from t_studect where id=1;
select from t_student where age>22
4、带in关键字查询:select 字段1,字段2 frome 表名 where 字段 [not]in(元素1,元素2);
例:select from t_student where age in (21,23);
select from t_student where age not in (21,23);
5、带between and的范围查询:select 字段1,字段2 frome 表名 where 字段 [not]between 取值1 and 取值2;
例:select frome t_student where age between 21 and 29;
select frome t_student where age not between 21 and 29;
这个通过dblink来实现是比较现实的,其要点和简单的过程如下:
1、首先,在两个服务器之一(这里假设是11那台)上,修改tnsnamesora文件(请注意,一定是服务器上的tnsnames文件,而不是你客户端机器的那个,也就是说这时候11这台服务器是要作为客户端去访问12服务器的),增加指向12的描述。假设你增加的描述符为ora_12。
ora_12 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 2021234512)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME =12上数据库的sid )
)
)
2、在11上建立指向12的db link,类似的语法如下(其中link_to_12是随便起得link的名称,以后使用的时候就用这个名称):
create public database link link_to_12 connect to 能访问12数据的用户名 identified by 密码 using 'ora_12';
3、这样,dblink就建好了,以后直接访问11数据库,当需要同时查询11和12的两个表时,在11上执行类似以下的语法:
select sname,cclassname
from student s, class@link_to_12 c
where ss_id=csid;
如果帮到你,请及时采纳最佳答案。
你的意思就是多个不同的服务器上的数据库有相同表结构的表,然后你想对这几张表都查询?你这个逻辑是不是有问题,不过你可以配置多个数据库连接信息,然后分别对里边的表进行查询在对比。不过我不明白既然表都一样,只查一个应该就可以了吧,为什么都要查一遍啊
1在同一台服务器同一个实例上的两个数据库的话,在表名字名字加上数据库名和架构名;如查询a数据库dbo架构下的mm表中的数据:select from adbomm
2在不同服务器上或者在不同实例上的两个数据库:
exec sp_addlinkedserver 'sv','','sqloledb','ip地址'
exec sp_addlinkedsvlogin 'sv','false',null,'sa','pwd'
go
select from svadbomm
可以这样做:比如有两个TADODataSet组成主细表
adsMain和adsDetail,需要加上一个TDataSource对象用于连接主表的DataSet,然后设置adsDetail的DataSource为主表的DataSource,最后写各自的CommandText:主表为:select
from
主表细表:select
from
细表
where
关联字段=:关联字段
查看原帖>>
0条评论