我正在尝试创建一个表来保存许多运动员的历史运行时间(以分钟为单位)。该表包含人员姓名的外键,并存储他们的新运行时间和先前的运行时间以及执行运行的日期。
我试图将运行者的所有记录保存在同一个表中。我想在新的运行时间完成时在新条目中引用旧的运行时间。我正在努力思考这种关系将如何运作。
下表解释了我想要实现的目标。
<小时/>|名称_ID {FK}|完成日期|新时间|旧时间|
| 001| 16/02/2019 | 123 | 123 108 |
| 001| 16/03/2019 | 136 | 136 123 |
如表所示,2019 年 2 月 16 日的新平均值显示为 2019 年 3 月 16 日的旧平均值。
我的问题是如何构建这种关系?是否有可能建立这种关系?
或者
有没有更有效的方法?即有下表:
<小时/>|名称_ID {FK}|完成日期|新时间|
| 001| 16/02/2019 | 123 |
| 001| 16/03/2019 | 136 |
并创建一个查询,该查询可以使用 Name_ID 和completion_Date 属性来生成输出:
<小时/>|名称_ID {FK}|完成日期|新时间|旧时间|
| 001| 16/02/2019 | 123 | 123 108 |
任何帮助将不胜感激。
最佳答案
如果您没有 Mysql 8.x 服务器,您可以使用它。
CREATE TABLE table1
(`Name_ID {FK}` int, `Completion_Date` varchar(10), `New_Time` int)
;
INSERT INTO table1
(`Name_ID {FK}`, `Completion_Date`, `New_Time`)
VALUES
(001, '16/01/2019', 108),
(001, '16/02/2019', 123),
(001, '16/03/2019', 136)
;
你可以使用这个
select `Name_ID {FK}`,`Completion_Date`,@quot old_time, @quot:=`New_Time` new_time
from table1 p,(SELECT @quot := 0) r
order by `Name_ID {FK}`,`Completion_Date`;
获得此结果:
Name_ID {FK} Completion_Date old_time new_time
1 16/01/2019 0 108
1 16/02/2019 108 123
1 16/03/2019 123 136
关于mysql - 如何将表内的属性引用到同一表内新行内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208634/