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