在平常的开发工作中,经常需要查询数据的并集,那么可以用union all来实现,如果查询的表一致,那么可以在where case when 来实现。
查询 “阿杜” 的语文成绩和 "小明" 的英语、数学成绩:
1:union all:
select st.`name`,sc.course,sc.score from score sc left join student st on sc.student_no = st.student_no where st.`name` = '阿杜' and sc.course = '语文'
union all
select st.`name`,sc.course,sc.score from score sc left join student st on sc.student_no = st.student_no where st.`name` = '小明' and sc.course in ('英语','数学')
2:where case when 条件:
select st.name,sc.course,sc.score from score sc left join student st on sc.student_no = st.student_no
where (case when st.name = '阿杜' then sc.course = '语文'
when st.name = '小明' then sc.course in ('英语','数学')
else false end)
以上为两种常见的用法,美好的风景一直在路上!