MySQL 传递 max() 列作为间隔天数

标签 mysql sql having

我在将 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/

相关文章:

mysql - 如何将 CASCADE 添加到已创建的外键

MySql 查询从给定表获取页面使用情况

mysql - GROUP BY WITH HAVING ( DISTINCT ) : PHP , MYSQL

mysql - 获得具有更好质量字段的记录

php - 如何查找和识别字符串的特定部分?

mysql - 使用 JPA 在 mySql 中保存字符串数组

php - 为什么 Web 服务不支持重音字母?

sql - 引用聚合列的 MySQL 别名

sql - 如何使用SQL根据数字查询列

mysql - 在 MySQL 中使用 GROUP BY 选择具有同一列的两个条件的行的最佳方法是什么?