问题描述
我有一个表格显示客户选择的交货日期,但这可能会发生变化,并且表格会在每次更改时添加一条新记录,因此我想要一个表格,其中包含他们选择的第一个值和他们选择的最后一个值。
表格是这样的:
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>;
,
首先,实际上可以使用DAYNAME()
函数找到日期名称,因此实际上无需将其存储在另一列中。但无论如何,试试这个代码。
SELECT
user_id,DAYNAME(MIN(DateUpdate)) as first_day,DAYNAME(MAX(DateUpdate)) as last_day
FROM tbl
GROUP BY user_id
如果您只需要日期,也可以删除 DAYNAME()
函数。