mysql如何实现跨数据库查询并按where子

mysql如何实现跨数据库查询并按where子,第1张

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)

如果A、B库在同一个mysql实例下(同一执行程序下)可以用A.search,B.room去访问:

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、需要当前用户对两个库具备相应的访问和 *** 作权限

2、通过数据库名.表名的方式进行join

SELECT

*

FROM

db1.t1 a

INNER JOIN db2.t2 b ON a.id = b.id

WHERE

a.Id = 1

3、建议改为es方式进行数据处理,想学java欢迎关注。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存