如何将使用JOIN的SQL查询语句改写为全嵌套子查询
改写后的全嵌套查询语句
SELECT guest# "guests on horseback", city, state FROM guests WHERE guest# IN ( SELECT guest# FROM reservations WHERE YEAR(rdate) = 2019 AND MONTH(rdate) IN (6,7) AND aid IN ( SELECT aid FROM activities WHERE type = 'horseback' ) ) ORDER BY 1;
逻辑说明
该写法与你原有JOIN实现的查询结果完全一致,所有关联逻辑均通过嵌套子查询实现,符合全嵌套查询的要求:
- 最内层子查询:从
activities表筛选出所有类型为骑马(horseback)的活动编号aid - 中间层子查询:从
reservations表筛选出2019年6、7月提交、且预订的活动编号属于内层返回结果的预订记录对应的客人编号guest# - 最外层查询:从
guests表提取客人编号属于中间层返回结果的客人的编号、所在城市、州信息,最终按第一列排序输出
内容的提问来源于stack exchange,提问作者Musk Long
相关产品推荐
相关产品推荐

