MySQL的子查询
最近刷力扣数据库题发现了一个以前没用过的子查询 ALL,特此写一篇小博客记录一下这个子查询的用法。
原题链接在此:销售分析 I
题目的要求是 编写一个 SQL 查询,查询总销售额最高的销售者,如果有并列的,就都展示出来。
查看题解发现了一个没见过的解法
select
seller_id
from
sales
group by seller_id
having
sum(price) >= all(select sum(price) from sales group by seller_id)
发现了新大陆——all
MySQL有以下子查询,对应的操作为:
- IN:给出一个范围内的值,只要有就true
- ALL: 与子查询返回的所有值比较为true 则返回true
- ANY:与子查询返回的任何值比较为true 则返回true
- SOME:是ANY的别称,很少用
结合这个含义,以上的sql可以翻译为查询所有的销售员的总销售额大于其他销售员总销额的销售员的ID,也就满足了题意。以前没用过这个子查询,特此记录一下。