编写SQL查询获取Hiker表中主键匹配指定子查询结果的字段
SQL查询实现方案
直接使用IN子查询写法
贴合你描述的逻辑,直接将筛选TourID=115的HikerID逻辑作为子查询嵌入筛选条件:
-- 替换字段列表为你实际需要从Hiker表提取的字段,需全部字段可写为* SELECT 字段1, 字段2, 字段N FROM Hiker WHERE HikerID IN ( SELECT HikerID FROM Reservation WHERE TourID = 115 )
带命名子查询的CTE写法
如果你需要单独定义名为qryTour115Subquery的子查询方便后续复用,可使用公共表表达式实现:
-- 定义命名子查询 WITH qryTour115Subquery AS ( SELECT HikerID FROM Reservation WHERE TourID = 115 ) SELECT 字段1, 字段2, 字段N FROM Hiker INNER JOIN qryTour115Subquery ON Hiker.HikerID = qryTour115Subquery.HikerID
注意事项
- 两种写法返回结果完全一致,IN子查询写法更简洁,CTE写法更方便子查询逻辑的独立调整和复用
- 由于HikerID是Hiker表主键、Reservation表外键,天然无重复,无需额外去重;如果你的业务场景存在同一徒步者多次预约同一行程的情况,可在子查询的
HikerID前添加DISTINCT优化查询效率
内容的提问来源于stack exchange,提问作者Chad Meyers
相关产品推荐
相关产品推荐

