SELECT 3 AS x, 5 as y, (x+y) as z
结果我期望;为什么该查询不能按我的预期工作?
x y z
3 5 8
结果我得到了;
#1054 - Unknown column 'x' in 'field list'
SELECT 3 AS x, 5 as y, (x+y) as z
结果我期望;为什么该查询不能按我的预期工作?
x y z
3 5 8
结果我得到了;
#1054 - Unknown column 'x' in 'field list'
SELECT子句(和列别名)在同一时间,在任何特定的顺序进行评估。也就是说,在你想要z的同一点上,列x和y还不存在。
SELECT
(x+y) as z
FROM
(
SELECT 3 AS x, 5 as y
) t;
您不能以这种方式引用列别名。尝试
SELECT (tmp.x + tmp.y) as z FROM (SELECT 3 AS x, 5 as y) tmp
你有我给予好评的这个问题 – motto 2012-01-16 10:13:34
我要去接受你的答案,因为你已经回答了为什么它不与例如由于一吨工作的原因吧!我希望更多地了解mysql的工作原理:) – motto 2012-01-16 10:15:31
@motto:谢谢。这是一般SQL(基于集合,声明式)而不仅仅是MySQL。 – gbn 2012-01-16 10:16:38