【实践篇】组合查询

2022-04-07  本文已影响0人  山药鱼儿

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

有如下的用户信息表 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';

检索结果如下:

上一篇 下一篇

猜你喜欢

热点阅读