【实践篇】组合查询

连载的上一篇文章,我们在实践连接查询的时候,实际上是通过连接条件在水平方向上组合多张表。本节实践的组合查询则相当于是并集,在垂直方向上组合字段相同的多个查询结果。

有如下的用户信息表 user_profile

下面,我们需要编写 SQL 检索出其中学校为山东大学或者性别为男性的用户信息,结果不去重

那如果是去重的话,通常我们会编写多个条件的 WHERE 子句来实现:

SELECT 
    device_id, gender, age, gpa 
FROM 
    user_profile
WHERE 
    university = '山东大学' OR gender = 'male';

或者在条件比较复杂时,也可以使用 UNION 来使得结果更清晰:

SELECT device_id, gender, age, gpa 
FROM user_profile
WHERE university = '山东大学'

UNION

SELECT device_id, gender, age, gpa 
FROM user_profile
WHERE gender = 'male';

检索结果如下:

可见 UNION 在并集检索时,对结果中重复的部分进行了去重。那如果期望像我们题目中要求的那样,结果不去重怎么实现呢?

很简单,使用 UNION ALL 即可:

SELECT device_id, gender, age, gpa 
FROM user_profile
WHERE university = '山东大学'

UNION ALL

SELECT device_id, gender, age, gpa 
FROM user_profile
WHERE gender = 'male';

检索结果如下:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容