如何从MySQL中的最新记录集中找到最早的日期?
考虑以下
+--------+-----------+------------+
| ID | PRODUCTID | DATEACTIVE |
+--------+-----------+------------+
| 546502 | 23405 | 2017-07-20 |
| 545075 | 23405 | 2017-07-19 |
| 543651 | 23405 | 2017-07-18 |
| 456783 | 23405 | 2017-01-04 |
| 456782 | 23405 | 2017-01-03 |
| 456781 | 23405 | 2017-01-02 |
| 456780 | 23405 | 2017-01-01 |
| 65453 | 23405 | 2016-07-19 |
| 65452 | 23405 | 2016-07-18 |
+--------+-----------+------------+
我希望能够找到产品被激活的最近时间(2017年7月18日)
答案 0 :(得分:1)
请继续关注斯隆在评论中所说的内容。
如果我理解你的问题,你可以使用这样的东西。 内部部分的查询将所有连续日期“分组”,为每个“组”提供一个连续的数字 然后仅选择“第一个”组(更新的)并按日期按升序对行进行编号。 最后,选择具有第一个“行号”的行。
SELECT *
FROM (
SELECT @rn:=@rn+1 AS RN,
A.*
FROM (
SELECT @gr:= IF(@prev_date=DATE_ADD(dateactive, INTERVAL +1 DAY), @gr, @gr+1) AS GR
,TN.*
,@prev_date:=dateactive AS PD
FROM TN
CROSS JOIN (SELECT @gr:=0, @prev_date:=(SELECT MAX(dateactive) FROM TN)) R
ORDER BY DATEACTIVE DESC
) A
CROSS JOIN (SELECT @rn:=0) R2
WHERE GR=1
ORDER BY DATEACTIVE
)B
WHERE RN=1;
输出:
RN GR id productid dateactive PD
1 1 543651 23405 18.07.2017 00:00:00 2017-07-18
答案 1 :(得分:0)
SELECT MAX(DATEACTIVE) as most_recent_time
FROM `YOUR_TABLE_NAME`
WHERE PRODUCTID = 'YOUR_ID'
答案 2 :(得分:0)
您可以使用ORDER BY
按日期对数据进行排序,请参阅以下代码:
SELECT *
FROM `YOUR_TABLE_NAME`
WHERE `PRODUCTID` = 'YOUR_ID'
ORDER BY `DATEACTIVE` DESC;