使用 MYSQL 获取每个组的最大日期

Getting Max Date for each group using MYSQL

我在 MYSQL 中有一张发票 table,它具有以下数据类型。 发票 : 标识符 VARCHAR(20) 日期添加文字 状态变量 (10) 数据看起来:

   ID           DATEADD        STATUS
'A0011'  '04/01/2018 11:58:31'  'N'
'A0011'  '31/05/2019 10:02:36'  'N'
'B0022'  '04/01/2018 11:58:31'  'N'
'B0022'  '31/05/2019 10:02:36'  'N'
'B0022'  '30/04/2020 19:44:36'  'N'

脚本:

SELECT  ID,MAX(DATEADD)DATEADD,STATUS FROM (
SELECT  ID ,STR_TO_DATE(DATEADD, '%d/%m/%y')DATEADD,STATUS FROM Invoice  WHERE  STATUS = 'N' )T
 GROUP BY  ID, Status;

但我没有得到上述数据的最大日期。

要求输出:

   ID           DATEADD        STATUS
'A0011' '31/05/2019 10:02:36' 'N'
'B0022' '30/04/2020 19:44:36' 'N'

有了 MySQL 8+ 你可以使用 ROW_NUMBER

with cte as(
select *,row_number() over(partition by ID order by STR_TO_DATE(DATEADD, '%d/%m/%Y %H:%i:%s') desc) as row_num
from Invoice 
) select ID,DATEADD,STATUS
from cte
where row_num =1;

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=150299f52a7bfa8d06f42d723c648ed6

在旧 MySQL 尝试:

 SELECT ID,  
         DATEADD,
         status
FROM Invoice in1 where (ID,STR_TO_DATE(DATEADD, '%d/%m/%Y %H:%i:%s')) in ( select ID,                                                  
                                                                                  MAX(STR_TO_DATE(DATEADD, '%d/%m/%Y %H:%i:%s'))
                                                                           from  Invoice
                                                                          GROUP BY ID 
                                                                          );

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=2d0344c1eb99de9e00c6410f5b734133