select g.goods_id from ( select gr.`goods_id`,count(gr.`goods_id`) num from rkgl_goods_repertory gr join rkgl_repertory r on r.`id`=gr.`repertory_id` join spgl_goods g on g.`id`=gr.`goods_id` join spgl_brand b on b.`id`=g.`brand_id` join spgl_goods_type gt on gt.`id`=g.`goods_type_id` where r.`user_id`=36 and g.`is_delete`=false and gt.`is_delete`=false and b.`is_delete`=false and gr.`num`=0 group by gr.`goods_id`) g where g.num>1 union select g.goods_id from ( select gr.`goods_id`,count(gr.`goods_id`) num from rkgl_goods_repertory gr join rkgl_repertory r on r.`id`=gr.`repertory_id` join spgl_goods g on g.`id`=gr.`goods_id` join spgl_brand b on b.`id`=g.`brand_id` join spgl_goods_type gt on gt.`id`=g.`goods_type_id` where r.`user_id`=36 and g.`is_delete`=false and gt.`is_delete`=false and b.`is_delete`=false and gr.`num`=0 group by gr.`goods_id`) g where g.num=1
简单的实例就是
select * from a union select * from b
或者
(select * from a join b on a.id=b.a_id ) c union select * from d
还有一点就是union是过滤相同结果集求存不同结果集,而union all是全部累加一起。
