SELECT 3 AS x, 5 as y, (x+y) as z
我期望的结果;
x y z
3 5 8
我得到的结果;
#1054 - Unknown column 'x' in 'field list'
答案 0 :(得分:3)
您不能以这种方式引用列别名。尝试
SELECT (tmp.x + tmp.y) as z FROM (SELECT 3 AS x, 5 as y) tmp
答案 1 :(得分:2)
SELECT子句(和列别名)同时进行评估,没有特定的顺序。也就是说,在你想要z的同一点上,x和y列还不存在。
SELECT
(x+y) as z
FROM
(
SELECT 3 AS x, 5 as y
) t;
答案 2 :(得分:1)
SELECT @x:=3 as x, @y:=5 as y, (@x + @y) as z;
答案 3 :(得分:0)
因为您无法使用新创建的别名X作为选择器的一部分。请使用常量,因为您不需要别名或临时表,如其他答案。
如果你真正的问题不同请发布,也许你只是想错了
SELECT 3 AS x, 5 as y, (3+5) as z
答案 4 :(得分:0)
你为什么要这样做?
由于您的查询使用常量,因此工作正常。
SELECT 3 as x,5 as y,(3+5) as z;
答案 5 :(得分:0)
z
和x
之前查询引擎可能会y
定义z
。这意味着x
和y
之前存在{{1}}。因而错误。