获取mysql中最早和最晚日期的值

问题描述

我有一个表格显示客户选择的交货日期,但这可能会发生变化,并且表格会在每次更改时添加一条新记录,因此我想要一个表格,其中包含他们选择的第一个值和他们选择的最后一个值。

表格是这样的:

user_id 日期更新
1 星期五 2021/07/01
3 星期日 2021/07/01
3 星期二 2021/07/15
4 周一 2021/07/02
4 星期三 2021/07/18
5 星期四 2021/07/12
7 周一 2021/07/01
7 星期三 2021/07/16

我想要的结果应该是这样的:

User_id first_day last_day
1 星期五 星期五
3 星期日 星期二
4 周一 星期三
5 星期四 星期四
7 周一 星期三

我应该使用什么功能?请问你能帮帮我吗?非常感谢!

解决方法

选择表格

MySQL Server 不支持 SELECT ... INTO TABLE Sybase SQL 扩展。相反,MySQL Server 支持 INSERT INTO ... SELECT 标准 SQL 语法,这基本上是一样的。

INSERT INTO tbl_temp2 (user_id,first_day,last_day)
SELECT tbl_temp1.user_id,tbl_temp1.first_day,tbl_temp1.last_day
FROM tbl_temp1 
WHERE <Need to add your selection criteria here>;

Reference doc

,

首先,实际上可以使用DAYNAME()函数找到日期名称,因此实际上无需将其存储在另一列中。但无论如何,试试这个代码。

SELECT 
user_id,DAYNAME(MIN(DateUpdate)) as first_day,DAYNAME(MAX(DateUpdate)) as last_day
FROM tbl
GROUP BY user_id

如果您只需要日期,也可以删除 DAYNAME() 函数。