1、当where子句中需要使用聚合函数作为筛选条件时,必须使用条件子查询2、当笛卡尔积连接后的结果,再跟第三张表join时,必须使用表子查询3、分组后的结果,需要再次分组时,必须使用表子查询4、当需要在where、group by或having子句中使用开窗函数时,必须使用表子查询