mysql - 根据最早日期更新所有记录
问题描述
我有这张桌子
=======================
prio_no |date
=======================
|2018-06-13
|2018-06-12
|2018-06-14
|2018-06-15
|2018-06-16
|2018-06-11
如何根据最早日期更新 prio_no?
更新后的表格应如下所示。
=======================
prio_no |date
=======================
3 |2018-06-13
2 |2018-06-12
4 |2018-06-14
5 |2018-06-15
6 |2018-06-16
1 |2018-06-11
解决方案
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(date DATE NOT NULL UNIQUE);
INSERT INTO my_table VALUES
('2018-06-13'),
('2018-06-12'),
('2018-06-14'),
('2018-06-15'),
('2018-06-16'),
('2018-06-11');
SELECT @i:=@i+1 id,date FROM my_table, (SELECT @i:=0) vars ORDER BY date;
+------+------------+
| id | date |
+------+------------+
| 1 | 2018-06-11 |
| 2 | 2018-06-12 |
| 3 | 2018-06-13 |
| 4 | 2018-06-14 |
| 5 | 2018-06-15 |
| 6 | 2018-06-16 |
+------+------------+
ALTER TABLE my_table ADD COLUMN id INT NULL;
UPDATE my_table x JOIN
(
SELECT @i:=@i+1 id,date FROM my_table, (SELECT @i:=0) vars ORDER BY date
) y
ON y.date = x.date
SET x.id = y.id;
ALTER TABLE my_table MODIFY COLUMN id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
SELECT * FROM my_table;
+------------+----+
| date | id |
+------------+----+
| 2018-06-13 | 3 |
| 2018-06-12 | 2 |
| 2018-06-14 | 4 |
| 2018-06-15 | 5 |
| 2018-06-16 | 6 |
| 2018-06-11 | 1 |
+------------+----+
推荐阅读
- winforms - X 轴 Winforms 图表中只有整数标签
- firebase - 反应原生 Redux 对象映射,在 firebase 的动态数据上创建副本
- wordpress - 从 www 重定向到非 www 不起作用
- asp.net - 如何在 asp.net 控制器中发布具有其他 Json 值的数组并遍历该数组
- docker - 如果我使用 create-react-app 是否需要 react-scripts
- postgresql - 使用 Spring-Data 在大量索引表中实现单个频繁更新的列
- swift - 如何获取自定义单元格类的样式,以编程方式实例化自定义单元格
- python - 色调饱和度值 (HSV) 颜色图轮 matplotlib
- python - 如何修复:列表索引必须是整数,而不是 str - 在查询 json 数据时
- java - 处理中的 keyPressed 问题