新手问题 连表查询的问题

tcstory · 发布于 2017年1月02日 · 最后由 fxllong262553 回复于 2017年1月06日 · 622 次阅读
14149

额,小弟刚做后端不久,可能有一些名词会弄错,希望大大们见谅.

目前,我在做的一个后台的服务, 涉及到一个 主播工资结算的查询

a表: 主播个人信息表 b表: 每个月主播的工资表,b表为主要的表

普通的查询: 先从b表里面拉取20条数据,然后在根据主播的id去a表里面把主播的信息拉回来,然后根据id拼接数据,然后返回给前端

条件查询: 假如我要查询的主播类型是已经签约的,我的做法是, 去a表里面把已经签约的主播的前20条找回来,然后拿着这个20个id去b表里面把相关的工资记录找到,然后再去拿一次a表的数据,把主播的信息补充完整,然后返回给前端

条件查询会遇到的问题是,假如我在a表里面找到前20条数据,刚好在b表里面找不到,那么就不会返回任何数据,那么会给人的感觉是"我想查看已经签约的主播的工资记录,但是却没有找到任何一条记录",也许你会奇怪为啥在b表里面会找不到数据,因为b表里面的数据是每个主播每个月的工资,有一些主播可能是刚签约的,所以刚好缺少某一个月的数据.

这个问题该如何解决呢? 我们的数据库是拆分开的,不允许用left join之类的东西

共收到 4 条回复
24405

第一个查询加上 exists,多查一次 b 表,大概这样吧

select id from a where exists (select * from b)

我想问一下,为啥不让用 left join 之类的啊?有什么缺点吗?

775

#1楼 @pinewong 同问,有那么多主播吗?

28684

#1楼 @pinewong 他应该是跨库了,oracle有 dblink,MySQL也有类似的解决方案,如果不能动数据库,就需要分步洗数据,先把工资表group出主播信息,然后在主播表去关联查询

5994

什么直播平台啊,后台用rails开发

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册