我有一个这样的查询:
select a,b, (a+b) as c, (a-b) as d, (a+b)*-1 as e, (a+b)/(a-b) as f from test;
有没有办法让我将以前定义的别名用作列,这样它就会像:
(a+b)/(a-b) as f from test
到c/d as f from test
或任何其他解决方案,我不会在此查询中重新编码任何表达式。
select *
from (
select a,b, (a+b) as c, (a-b) as d, (a+b)*-1 as e, (a+b)/(a-b) as f
from test
) s
使用用户定义的变量。
SELECT a,b,
@c := (a+b) as c,
@d := (a-b) as d,
@c*-1 as e,
@c/@d as f
FROM test;
它们可以有很多种方式,但据我所知,你可以通过使用这样的子查询来做到这一点。当您将主查询作为子查询并根据您的要求使用它时,您将获得所有别名作为列。
查看本教程以获取更多内容:http://www.mysqltutorial.org/mysql-subquery/
select a,b,c,d,e,f form
(select a,b, (a+b) as c, (a-b) as d, (a+b)*-1 as e, (a+b)/(a-b) as f from test)
x;