用 WITH 关键字简化查询
Coddy 高级 SQL 课程的第 2 课,共 13 课。
添加太多内部查询会让查询变得很复杂。例如,下面是一个包含多个子查询的查询:
SELECT * FROM table1
WHERE col2 IN (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
)
)为了简化查询,我们可以使用 WITH query_name AS (...) 关键字。它可以让我们给查询命名并保存,然后在需要的地方使用:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN query2 AND col4 IN query1这里我们在 query2 和主查询中重复使用了 query1。
挑战
简单设备的质量由 (width/height)*num_features 衡量。
我们想找出所有被低估的设备。获取所有 opinion 高于质量平均值且 score 低于平均质量的设备。
要解决这个问题,请使用 WITH 子句创建一个用于计算平均质量的子查询,并在主查询中重复使用它。
亲手试试
高级 SQL中的所有课
自己练习: Python 在线编译器