weixin_41756739
2018-05-23 01:28
采纳率: 0%
浏览 3.7k

两个没有关联字段的表,怎么按条件匹配

问题是这样的,一张职位表和一张简历表,两个没有可关联字段,按照简历表中个人的行业类型、工作类型、城市和薪资关联职位表,取职位表中与简历表四项信息吻合(行业类型相同,工作类型相同,城市相同,薪资大于职位最低薪资),提取简历ID和职位ID,并按职位最高薪资排序,如果匹配出3个以上jobID,则只取前三位。
    求助各位大神,应该怎么实现这个逻辑,我已经用sql实现了,但效率太低,线上负载很大,有没有其他的方法能实现。
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • weixin_41986182 2018-05-23 02:24

    如果是类似于51job这样的简历与职位,则不建议SQL语句直接搞完,而是应该编程实现。
    因为那样的简历、职位搜索条件太复杂了,而且不是简单的“等于”关系;并且需求还可能发生变化。

    先select 职位表,注意 where的条件,注意表的索引问题即可。
    再针对每条记录select 简历表,注意 where的条件,sort的条件,注意表的索引问题。使用游标,搜到了3条即终止。

    评论
    解决 1 无用
    打赏 举报
  • Keep_the_Hope 2018-05-23 01:35

    select a.*,b.* from a,b where a.username=b.username and a.username='admin'
    不要重复的那就用 union

    union all 是所有的都差出来
    select * from a where username='admin'
    union
    select * from b where username='admin';

    评论
    解决 无用
    打赏 举报
  • 一抹蓝2 2018-05-23 01:44

    不一定要一条sql写出来,可以写多条sql查。。

    评论
    解决 无用
    打赏 举报
  • SO_N_Y 2018-05-23 02:17

    可以把你的sql发出来,让大家看看有没有可以改进的地方,数据量是多大也可以顺便说一下

    评论
    解决 无用
    打赏 举报
  • tanghw234 2018-05-23 02:56

    四个条件取三个排列组合组合成查询语句,结果再联合。再去top 3

    评论
    解决 无用
    打赏 举报
  • 小辉-寰宇 2018-05-23 03:04

    sql语句发出来 才能给你优化

    评论
    解决 无用
    打赏 举报
  • DiLili_shi 2018-05-23 03:15

    试试组合主键,或者创建索引

    评论
    解决 无用
    打赏 举报
  • sghycess 2018-05-23 05:33

    通过视图来让两个表联系起来就可以了

    评论
    解决 无用
    打赏 举报
  • m0_37783493 2018-05-23 09:20

    可以写一个存储过程,把你需要的数据写在过程里试试

    评论
    解决 无用
    打赏 举报
  • 「已注销」 2018-05-24 04:14

    或者可以考虑使用程序来处理。把数据提取出内存,通过以后台任务这样的形式用程序来进行批处理,这样可一定程度缓解线上数据库负担过重的问题

    评论
    解决 无用
    打赏 举报
  • baidu_36078984 2018-05-28 10:22

    SELECT * , ROW _ NUMBER() OVER(PARTITION BY A.简历ID ORDER BY B.最高薪资) as Sequence FROM A
    LEFT JOIN B ON 行业类型相同,工作类型相同,城市相同,A.薪资>B.职位最低薪资

    然后再取出Sequence < 4 的记录即可。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题