两张表在不同的数据库,如何关联查询? 20
不在一个实例,IP地址也不相同。 展开
mysql支持多个库中不同表的关联查询,你可以随便链接一个数据库
然后,sql语句为:
select * from db1.table1 left join db2.table2 on db1.table1.id = db2.table2.id
只要用数据库名加上"."就能调用相应数据库的数据表了.
数据库名.表名
扩展资料
mysql查询语句
1、查询一张表: select * from 表名;
2、查询指定字段:select 字段1,字段2,字段3....from 表名;
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;
举个例子:
存在两个数据库DB1,DB2。
在DB1中有表Table1(ID,Name)
在DB2中有表Table1(ID,IID,AllInfo)
现在想把Table1,Table1两表关联起来查询一些数据。
查询语句如下:
SELECT *
FROM DB1.dbo.Table1 INNER JOIN
DB2.dbo.Table2 ON DB1.dbo.Table1.ID = DB1.dbo.Table1.IID
这样就可以查出所有存在关系的数据。
2. 在一个实例里吗?
如果在一个实例里,可以加上数据库名访问
select * from databasea.tuser user,databaseb.torder order where user.userid = order.userid
以mssql为例,其他的类似
sp_addlinkedserver '库别名','sqloledb','B库名'
sp_addlinkedsvrlogin '库别名','sa','密码'
然后在A库中就可以这样访问B库:
select * from 库别名.B库名.dbo.TORDER
带完整参数的例子:
exec sp_addlinkedserver '10.16.1.*,'','sqloledb','10.16.1.*',null,null,'*lant(远程库名)'
exec sp_addlinkedsrvlogin '10.16.1.*','false',null,'***a*ly','con***60'
另外:
sp_helpserver 帮助
EXEC sp_droplinkedsrvlogin '10.16.1.*', NULL;--删除链接的登录信息
Exec sp_dropserver '10.16.1.*', null;--删除链接的远程服务器
10.16.1.*.sms.dbo.表名