当前位置:   article > 正文

两张不同字段表结果集放在一个列表_多表不同子段放在其中一个表中

多表不同子段放在其中一个表中

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

今天在开发中遇到的一个问题,**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来对整个结果进行排序。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/554628
推荐阅读
相关标签
  

闽ICP备14008679号