两张不同字段表结果集放在一个列表

需求:两张表,字段不同,有条件有分页,结果集展示在一个列表中。

今天在开发中遇到的一个问题,**a,b两个表同为人员类型的数据,但是字段不一致。**首先分析,由于有条件查询以及分页,甚至多表查询,总共涉及三张表。首先a,b表的数据结果集要展示在一个列表中,我最终的解决方案是将a,b表分别查询再进行UNION ALL,最后关联c表,分页以及排序

a,b表结果集合并,再进行条件分页

思路:将a表字段全部查出,将b表部分字段自定义映射为a表字段名(没有的字段的使用虚拟数值映射),再将两张表的结果使用UNION ALL合并,再次进行链表查询和条件分页操作
代码:selelct ( (select * a表 ) UNION ALL (select b.1 AS a.1 ,···) )AS ab LEFT JOIN c ON ab.id = c.user_id
第一次碰到这样的需求,在此记录,日积月累。

关键点:
union 和 union all区别
union :对两个结果集进行并集操作,不会重复,同时进行默认规则排序;
union all:对两个结果集进行并集操作,包括重复行,不进行排序;
有关union和union all关键字需要注意的问题是:
1.使用union和union all必须保证各个select 集合的结果有相同个数的列,并且每个列的类型是一样的。
2.我们没有必要在每一个select结果集中使用order by子句来进行排序,我们可以在最后使用一条order by来对整个结果进行排序。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值