我在将 MAX(t.to_days) 作为 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
。
最佳答案
没有任何示例数据和预期结果,但我想你可以尝试使用 HAVING
而不是 WHERE
,因为 MAX
是
聚合函数,判断不能用别名。
select t.*, MAX(to_days) as max_days
from transactions t
HAVING CURRENT_DATE > DATE_ADD(`date`, INTERVAL MAX(to_days) DAY)
这是我的模拟样本 sqlfiddle
关于MySQL 传递 max() 列作为间隔天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51468569/