gpt4 book ai didi

mysql - 为 WHERE 上的子查询取别名

转载 作者:行者123 更新时间:2023-11-29 05:48:35 24 4
gpt4 key购买 nike

我有这个示例查询,假设 MAX(id) = 100

SELECT id
FROM users
WHERE id < (SELECT MAX(id) FROM users) AND id > (SELECT MAX(id) FROM users)-50

我从这个查询中得到 ids50 到 100 范围内并且它按预期工作

但我希望它更短,所以我尝试使用这样的别名

SELECT id
FROM users
WHERE id < (SELECT MAX(id) FROM users) AS maxid AND id > maxid-50

但是它不起作用然后我尝试像这样定义变量

SELECT id
FROM users
WHERE id < @x = (SELECT MAX(id) FROM users) AND id > @x-50

但是注意到了

Impossible WHERE noticed after reading const tables

如何做一次MAX(id)计算来节省性能?

最佳答案

您可以在查询之前定义变量:

set @maxid = (select max(id) from users);
SELECT id
FROM users
WHERE id > @maxid - 50 and id < @maxid;

参见 demo .

关于mysql - 为 WHERE 上的子查询取别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57078639/

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