gpt4 book ai didi

mysql - 在 WHERE 子句中访问 SELECT 的计算值

转载 作者:行者123 更新时间:2023-11-29 05:27:17 25 4
gpt4 key购买 nike

我正在尝试执行这样的查询:

SELECT
(17 + 4) AS foo,
foo * 2 AS bar;

失败,返回 “字段列表”中的未知列“foo”。所以我这样做了:

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;

失败:“where 子句”中的未知列“foo”

如果我在 WHERE 中将 foo 替换为 @foo,它就可以工作。但是,如果我用一列替换文字,它就会停止工作:

SELECT
(@foo := ipsum) AS foo,
@foo * 2 AS bar
FROM lorem
WHERE @foo = 33;

在表 lorem 中返回一个包含此内容的空集:

SELECT * FROM lorem;
+-------+
| ipsum |
+-------+
| 33 |
+-------+

最佳答案

我找到了解决方案,它使用 HAVING 子句而不是 WHERE 来工作,如下所示:

SELECT
(@foo := ipsum * 2) AS foo,
@foo * 2 AS bar
FROM lorem
HAVING foo = 66;

返回:

+------+------+
| foo | bar |
+------+------+
| 66 | 132 |
+------+------+

与:

SELECT * FROM lorem;
+-------+
| ipsum |
+-------+
| 33 |
| 41 |
+-------+

因为 HAVINGSELECT 之后被求值;而 WHERE 子句在它之前和 FROM 之后被求值

关于mysql - 在 WHERE 子句中访问 SELECT 的计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18740434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com