次のようなクエリを実行しようとしています。
SELECT
(17 + 4) AS foo,
foo * 2 AS bar;
失敗し、 を返しUnknown column 'foo' in 'field list'
ます。だから私はこれをしました:
SELECT
(@foo := 17 + 4) AS foo,
@foo * 2 AS bar;
これは機能します。foo
問題は、この計算値 ( ) をWHERE
句に統合したいということです。
SELECT
(@foo := 17 + 4) AS foo,
@foo * 2 AS bar
FROM lorem
WHERE foo = 21;
失敗: Unknown column 'foo' in 'where clause'
.
で に置き換えるfoo
と@foo
、WHERE
機能します。しかし、リテラルを列に置き換えると、機能しなくなります。
SELECT
(@foo := ipsum) AS foo,
@foo * 2 AS bar
FROM lorem
WHERE @foo = 33;
table の内容を含む空のセットを返しますlorem
:
SELECT * FROM lorem;
+-------+
| ipsum |
+-------+
| 33 |
+-------+