SQL学习笔记(六):编写复杂查询

125 阅读1分钟

1. Subqueries (子查询)

image.png

🌰中子查询在where子句后

2. The IN Operator

image.png

🌰中利用 not in + 子查询

3. Subqueries VS Joins

Attention: 综合考虑代码可读性和运行速度!!!

例1

image.png

例2:way1

image.png

例2:way2 (比way1 运行速度更快)

image.png

4. The ALL Keyword (ALL关键字)

way1 :效率更高

image.png

way2:针对本题更直观。

image.png

5. The ANY Keyword (ANY关键字)

子查询有多个值,any表示只需要满足其中一个值即可。

image.png

6. Correlated Subqueries (相关子查询)

Attention : 使用 Correlated Subqueries 时,查询会在主查询的每一行层面执行。(执行很慢,但现实中应用较多)

image.png

7. The EXISTS Operator

  • 相当于in
  • 当子查询结果集很大时,使用exists更快捷。(例如 查询amazon中哪些产品未出售过,结果集相当大)
image.png

🌰中子查询只返回 true/false,这样运行速度更快 。

image.png

8. Subqueries in the SELECT Clause (Select子句中的子查询)

  • select子句中可以加子查询
  • 新建列名不能直接运算(total_sales - average),但是在select子句里面可以select(total_sales - average)
image.png

Attention: - group by是对select所有列进行分类,🌰中用到了average是所有行非分类的值,因此🌰不能用group by了

9. Subqueries in the FROM Clause (FROM子句中的子查询)

image.png

From 子句必须另命名,🌰中命名为了 sales summary