mysql - MySQL Pass max() 列作为间隔天数
问题描述
我有传递MAX(t.to_days) as max_days
到的问题DATE_ADD(t.date, INTERVAL max_days DAY)
。
询问:
select t.*, MAX(t.to_days) as max_days
from transactions t
where CURRENT_DATE > DATE_ADD(t.date, INTERVAL max_days DAY)
返回错误:“where 子句”中的未知列“max_days”。
我也试过:
select t.*, @num:=CAST(MAX(t.to_days) AS UNSIGNED)
from transactions t
where CURRENT_DATE > DATE_ADD(t.date, INTERVAL @num DAY)
但DATE_ADD
回归null
。
解决方案
我强烈将此查询写为:
select t.*, tt.max_days
from transactions t cross join
(select max(t.to_days) as max_days from transactions t) tt
where t.date < date_sub(CURRENT_DATE, interval tt.max_days day);
为什么?这个版本应该能够利用transactions(to_day)
.
推荐阅读
- vue.js - [Vue 警告]:属性或方法“stateSidebar”未在实例上定义,但在渲染期间被引用
- shell - 如何在远程服务器上通过 ssh 执行多个命令
- .htaccess - What is the best way to redirect (301) many articles on Gatsby JS?
- javascript - 使名称变量在javascript中显示为粗体
- spyder - Spyder 未启动 - 未找到 QCoreApplication 实例
- keycloak - Keycloak 作为某些系统和 gsuit 之间的身份代理
- iot - IoT-Agent 检查不在 iot 有效负载中的默认属性
- javascript - 如何从 gulpfile.js 调用 webpack.config.js
- python - 使用 Django 在 Atoti 中创建一个已填充的仪表板并显示图表
- python - 从数据框中解析 url