咨询基于两个子查询执行计算的正确SQL语法
正确SQL写法说明
你原来的多子查询写法存在语法错误,因为两个子查询直接并列时,数据库无法确定如何匹配两组数据的关联关系。正确的做法是通过JOIN语句,将两个子查询按共同字段(此处为name)进行关联,因为两个子查询都基于data表且包含name字段。
修正后的SQL代码
SELECT X.calculation1, Y.calculation2 FROM (SELECT name, x/y as calculation1 FROM data) X JOIN (SELECT name, a/b as calculation2 FROM data) Y ON X.name = Y.name WHERE X.calculation1 > 10;
补充说明
- 若
name在data表中是唯一标识,使用INNER JOIN(即上述代码中的JOIN)即可获取匹配结果;如果需要保留X中所有符合条件的记录(即使Y中无对应name的数据),可以替换为LEFT JOIN。 - 也可以省略子查询,直接在主查询中计算两个字段,写法更简洁且性能更优:
SELECT x/y as calculation1, a/b as calculation2 FROM data WHERE x/y > 10;
内容的提问来源于stack exchange,提问作者anvd
相关产品推荐
相关产品推荐

