如果A、B库在同一个mysql实例下(同一执行程序下)可以用A.search,B.room去访问:
创新互联是专业的凌源网站建设公司,凌源接单;提供网站设计制作、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行凌源网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
update A.search s join B.room r on s.room_id=r.room_id
set s.is_online=r.is_online;
不过你这room如果只有几条,直接把is_online对应room_id的值写在sql里去更新A.search表不就好了
update A.search set is_online=(case when room_id=x1 then y1 when room_id=x2
then y2 when room_id=x3 then y3 ...... else yn end)
1、where型子查询
(把内层查询结果当作外层查询的比较条件)
#不用order by 来查询最新的商品
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
#取出每个栏目下最新的产品(goods_id唯一)
select cat_id,goods_id,goods_name from goods where goods_id in(select max(goods_id) from goods group by cat_id);
2、from型子查询
(把内层的查询结果供外层再次查询)
#用子查询查出挂科两门及以上的同学的平均成绩
思路:
#先查出哪些同学挂科两门以上
select name,count(*) as gk from stu where score 60 having gk =2;
#以上查询结果,我们只要名字就可以了,所以再取一次名字
select name from (select name,count(*) as gk from stu having gk =2) as t;
#找出这些同学了,那么再计算他们的平均分
select name,avg(score) from stu where name in (select name from (select name,count(*) as gk from stu having gk =2) as t) group by name;
3、exists型子查询
(把外层查询结果拿到内层,看内层的查询是否成立)
#查询哪些栏目下有商品,栏目表category,商品表goods
select cat_id,cat_name from category where exists(select * from goods where goods.cat_id = category.cat_id);
如果你是在一个服务器上的跨库访问的话,只用一个连接就可以的
SELECT * FROM loginfo table1 a inner join db2.table2 b on 条件 ;
连接的数据库写db1就可以了
1、需要当前用户对两个库具备相应的访问和操作权限
2、通过数据库名.表名的方式进行join
SELECT
*
FROM
db1.t1 a
INNER JOIN db2.t2 b ON a.id = b.id
WHERE
a.Id = 1;
3、建议改为es方式进行数据处理,想学java欢迎关注。
如果不使用数据库中间件的话,这样的逻辑一般是放在业务层面来通过代码来合并数据。