描述
- 题目:现在运营想要找到gpa在3.5以上(不包括3.5)的山东大学用户 或 gpa在3.8以上(不包括3.8)的复旦大学同学进行用户调研,请你取出相应数据
- 地址:https://www.nowcoder.com/practice/d5ac4c878b63477fa5e5dfcb427d9102?tpId=199&tags=&title=&difficulty=0&judgeStatus=0&rp=0
- 法1 union
SELECT device_id, gender, age, university,gpa from user_profile where gpa > 3.8 and university = '复旦大学' UNION
SELECT device_id, gender, age, university,gpa from user_profile where gpa > 3.5 and university = '山东大学'
- 法2 子查询
select device_id,gender,age,university,gpa
from user_profile
where
device_id in (select device_id from user_profile where gpa>3.5 and university='山东大学')
or
device_id in (select device_id from user_profile where gpa>3.8 and university='复旦大学')
- 法3 or
#语句1
SELECT device_id, gender, age, university,gpa
from user_profile
where (gpa > 3.8 and university = '复旦大学') or (gpa > 3.5 and university = '山东大学')
#语句2
SELECT device_id,gender,age,university,gpa
FROM user_profile
WHERE gpa > 3.5 and university = '山东大学' OR gpa > 3.8 and university = '复旦大学';
值得一提的是,不仅仅是在Sql Server中,电路中、编程语言中都是and的优先级高于or,即:逻辑与的优先级比逻辑或要高,但是同时低于逻辑非。
下次研究一下从执行速率、内存消耗上分析,加括号和不加括号有什么区别