MYSQL-添加列并计算日期的过期天数,并按最长延迟排序
假设我有一个带有以下字段和金额的MYSQL-添加列并计算日期的过期天数,并按最长延迟排序,mysql,aggregate-functions,Mysql,Aggregate Functions,假设我有一个带有以下字段和金额的tb\u invoice表: id | transaction_id | value | due 1 | 1 | 1109.97 | 2020-02-19 2 | 1 | 10, | 2019-05-01 我想添加value列,计算延迟天数并按最长延迟排序 通过下面的查询,我甚至可以得到某种结果,但它仍然不是我所需要的: SELECT *, SUM(value) AS total, DAT
tb\u invoice
表:
id | transaction_id | value | due
1 | 1 | 1109.97 | 2020-02-19
2 | 1 | 10, | 2019-05-01
我想添加value列,计算延迟天数并按最长延迟排序
通过下面的查询,我甚至可以得到某种结果,但它仍然不是我所需要的:
SELECT *, SUM(value) AS total, DATEDIFF(CURDATE(), due) as delay
FROM tb_invoice
WHERE transaction_id = 1
GROUP BY transaction_id
这给我带来了以下结果:
id | transaction_id | value | due | total | delay
1 | 1 | 1109.97 | 2020-02-19 | 1119.97 | 91
我需要按最长的延迟订购,甚至按添加订单,我不能!有可能做到这一点吗?您无意中发现了。SELECT提到一个值DATEDIFF(CURDATE(),due)
,该值不是聚合函数,在GROUP BY子句中也没有提到。所以它实际上意味着DATEDIFF(CURDATE(),任意值(due))
思考任何值()
的一个好方法是可能是你想要的值,可能不是()。换句话说,它不是确定性的
对列值DATEDIFF(CURDATE(),MIN(due))
尝试此操作。使用orderbymin(due)
首先获取最旧的商品。欢迎使用SO。请看