数据库怎么最简单实现 “栈” 结构存储?

2018-01-20 20:00:44 +08:00
 miniyao
比如用数据库保存员工的签到记录,只要求保留最后 30 次的签到记录即可。

现在是写了个定时任务去每天晚上自动执行“删除超过 30 次的旧记录”,有没有更简单的方法,用类似入栈 /出栈的方式,在员工签到的时候就把这个“删除超过 30 次的旧记录”的操作给办了?

即:如果新员工签到记录不满 30 条,签到记录就都留着;老员工已经有最近 30 次签到记录的,每次打卡,自动把最早的那条旧记录剔除。
7398 次点击
所在节点    MySQL
55 条回复
murmur
2018-01-21 12:31:51 +08:00
只要求保留最后 30 次的签到记录即可-》查询的时候 order by time limit 30
这需求理解的不到位啊
murmur
2018-01-21 12:33:23 +08:00
更正:不到位->太到位
这种东西肯定留着要翻旧账的 就算你公司以前没劳资纠纷也要准备好资料
别说最后 30 次了 这种东西留到他离职后半年都不过分
签到记录才多少么 1000 人的公司 一天 2 次 一个月才多少数据
janus77
2018-01-21 13:41:49 +08:00
用 redis ?最右的 push 出去
shakoon
2018-01-21 14:03:15 +08:00
删数据一时爽,欲查询时悔断肠
akira
2018-01-21 14:14:03 +08:00
所有签到记录放一个原始记录表,另外弄个表来维护最近 30 次签到记录
jyf
2018-01-21 14:47:17 +08:00
@geelaw ring 吧
tairan2006
2018-01-21 14:48:22 +08:00
没必要吧…历史数据还是有用的,删了以后后悔吧=,=
pynix
2018-01-21 15:37:45 +08:00
LIMIT(TOP) 30 不就行了。。。。

记录当然最好保留历史。。。。
qoras
2018-01-21 16:30:38 +08:00
通常都是标志位假删除, 员工签到没有多少数据的吧
irgil
2018-01-21 18:33:14 +08:00
大哥,先进先出是队列
flyingHagan
2018-01-22 02:00:03 +08:00
查的时候直接选取最近的 30 条不就行了,定时删掉也是一个可取的方案,就是不太理解为什么必须删掉这些数据?
corningsun
2018-01-22 08:53:06 +08:00
同意 @lihongjie0209

数据千万别真删除了,留着肯定有用的。
不然后面提前需求,或者撕逼了,你就完了。。
RainFinder
2018-01-22 09:43:40 +08:00
签到不应该是按天的吗,一天签 30 次这个月就结束了?
cgb1021
2018-01-22 11:45:07 +08:00
按时间排序不就搞定了吗
mingl0280
2018-01-22 21:33:34 +08:00
没必要删吧……
另外这个是“队列”,FIFO 的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/424568

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX