两张表在不同的数据库,如何关联查询?

两张表在不同的数据库,如何关联查询?,第1张

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

可以用谓词或联结实现:

连接实现:

select * from b join a on b.id=a.id where a.b=21

联结实现的条件是两表id来自同一值域,表示意义相同.在连接时其实两可以作成一个表的:

也就是

id,a.b,a.c,b.b.b.c

但由于空值的问题,导致了部分依赖所以才会拆分成两个表的.

使用谓词实现:

select * from b where id in (select id from a where a.b=21)

这个可以实现两表id来自同一值域,但表示意义不同的情况.也就是说两表中的id有无关性.

相比较而言,连接的方式更快一些,但这种情况是两表来自同一值域,且意义相同,如果不是这种情况,可能得不到你正确的值的.而使用谓词不管意义是否相同,都可以得到正确的值.

玩数据库必须知道这两个表是否具有相关性,也就是设计时的意义,否则优化词句什么的都没有办法去做的!

有几种方式可以实现你的这个需求.

1. 使用表 关联

SELECT * FROM 表2 JOIN 表1 ON ( 表2.ID = 表1.列1 )

2. 使用 IN

SELECT * FROM 表2 WHERE ID IN ( SELECT 列1 FROM 表1)

3.使用 EXISTS

SELECT * FROM 表2

WHERE EXISTS ( SELECT 1 FROM 表1 WHERE 表2.ID = 表1.列1 )

select * from t2 left join t1 on t2.ID = t1.列1 where t1需要啥条件 and t2需要啥条件

select * from 表2 where 某列 in (select 列1 from 表1) and id=1

sql语句从一张表中查询数据插入到另一张表中的方法如下:

1、select * into destTbl from srcTbl。

2、insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl。以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的:第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量。


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

原文地址: http://outofmemory.cn/sjk/10803210.html

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

发表评论

登录后才能评论

评论列表(0条)

保存