2012-01-16 16 views

答えて

2

SELECT句(および列の別名)が同時にかつ順不同で評価されます。つまり、zと同じポイントでxとyの列はまだ存在しません。

SELECT 
    (x+y) as z 
FROM 
    (
    SELECT 3 AS x, 5 as y 
    ) t; 
+0

私はあなたの答えを受け入れるつもりです。私は、mysqlの仕組みの背後にある論理についてもっと知りたいと思っています:) – motto

+0

@motto:ありがとう。これは、SQLだけでなく、MySQLベースでも一般的です(セットベース、宣言型)。 – gbn

3

このように列エイリアスを参照することはできません。試す

SELECT (tmp.x + tmp.y) as z FROM (SELECT 3 AS x, 5 as y) tmp 

のRef .: Subqueries in the FROM Clause

+0

あなたはその質問に私のupvoteを持っています – motto

0

セレクタの一部として新しく作成されたエイリアスXを使用できないためです。エイリアスや他の回答のような一時的なテーブルは必要ないので、代わりに定数を使用してください。あなたの本当の問題が異なる場合

それを投稿してください、多分あなたは、単にこの間違った

SELECT 3 AS x, 5 as y, (3+5) as z 
+0

あなたのお問い合わせがうまくいきません – motto

+0

ええ、私は2番目のエイリアスを忘れました。 – TecHunter

0

は、なぜあなたはこれをしたいだろうと考えていますか?

クエリで定数が使用されるため、正常に動作します。

SELECT 3 as x,5 as y,(3+5) as z; 
+0

私の質問は本当の問題の単純化されたバージョンです、あなたの答えはあまり助けにはなりません。 – motto

+0

あなたが文脈を提供していない場合、本当の質問を理解することは難しいです! – Henrik

0

それは、zxy前に、クエリエンジンによって定義されている可能性があります。つまり、は、xyの前に存在します。したがってエラーです。

+1

あなたは質問を読んでいますか? – newtover

+0

@newtover:ワットが間違っていますか? – Azodious

+1

@Azodiousあなたが与えたリンクを調べた後、私はこれが私の質問とどのように関連しているのかよく分かりません。これがバグだと確信していますか?それは私にはもっと可能性の高い機能です。 – motto

1
SELECT @x:=3 as x, @y:=5 as y, (@x + @y) as z; 
+0

うわー、変数を使って、とても素敵で違ったアプローチで私のupvoteを手に入れました。私はあなたの答えを見ていて、非常に密接に私はあなたから多くを得ることができるでしょう:) – motto

+0

@motto、助けてください! =) – newtover

関連する問題