如何不使用子查询重写含关联逻辑的SELECT WHERE查询语句
实现方案
直接通过第二次关联y表即可替换子查询逻辑,等效SQL写法如下:
SELECT * FROM x JOIN y ON x.struktorg = y.ref -- 第二次关联y表用于匹配已知的symbol值 JOIN y y_parent ON y.rodzic = y_parent.ref WHERE y_parent.symbol = 'the value i know'
逻辑说明
- 给第二次关联的y表设置别名
y_parent,专门用来过滤你已知的symbol取值 - 关联条件
y.rodzic = y_parent.ref完全等价于原来子查询的匹配逻辑,最终返回的结果和原有写法一致 - 如果存在列名冲突问题,建议按需指定返回的字段,代替
SELECT *避免数据异常
内容的提问来源于stack exchange,提问作者malyGatsby
相关产品推荐
相关产品推荐

