赞
踩
今天在开发中遇到的一个问题,**a,b两个表同为人员类型的数据,但是字段不一致。**首先分析,由于有条件查询以及分页,甚至多表查询,总共涉及三张表。首先a,b表的数据结果集要展示在一个列表中,我最终的解决方案是将a,b表分别查询再进行UNION ALL,最后关联c表,分页以及排序
思路:将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来对整个结果进行排序。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。