作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个示例查询,假设 MAX(id) = 100
SELECT id
FROM users
WHERE id < (SELECT MAX(id) FROM users) AND id > (SELECT MAX(id) FROM users)-50
我从这个查询中得到 ids
在 50 到 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/
我是一名优秀的程序员,十分优秀!