select device_id,gender,age,gpa
from user_profile
where university = '山东大学'
union all #组合数条SQL查询,将它们的结果组合成一个结果集,且不去重,只要满足一个条件就被筛选出来
select device_id,gender,age,gpa
from user_profile
where gender = 'male'
# -union组合数条SQL查询
# 利用 UNION,可给出多条 SELECT 语句,将它们的结果组合成一个结果集。
# 使用 UNION 很简单,所要做的只是给出每条 SELECT 语句,在各条语句之间放上关键字 UNION。但需要注意的是UNION 中的每个查询必须包含相同的列、表达式或聚集函数(不过, 各个列不需要以相同的次序列出)
# UNION 从查询结果集中自动去除了重复的行;换句话说,它的行为与一条SELECT语句中使用多个WHERE子句条件一样,使用 UNION 时,重复的行会被自动取消。 这是UNION 的默认行为,如果想不去重的返回所有的匹配行,可使用 UNION ALL,union all 可以不去重
# 错误答案:
# select device_id,gender,age,gpa
# from user_profile
# where university = '山东大学' or gender = 'male'
# 原因分析:
# # or等价于union,进行了去重操作
# 示例:根据题意应该是从查找山东大学会选出2条数据,从性别男会选出5条数据,返回的结果应该是7条数据
# 如果使用OR(功能=union),则会剔除山东大学选出的2条数据(因为从male的角度已经选取过了)
# 即从山东大学挑选出的信息=从男性挑选出的信息时,剔除该条数据