php - PHP/MySQL - 获得连胜
问题描述
我试图展示用户的连胜记录,但我很难弄清楚我将如何编写它——甚至是概念。
这是一个示例(从最新到最旧)数据库:
id | win_id| loss_id| player id
1 | 123 | 999 | 123
2 | 123 | 999 | 123
3 | 999 | 123 | 123
4 | 123 | 999 | 123
所以我想显示的是 player_id: 123 的连胜记录 - 所以,它应该为连胜记录回显“2”,因为用户在 id 3 上输掉了一个中断
解决方案
当前连胜的可能解决方案:找到玩家获胜的所有比赛,但前提是以后没有失败:
SELECT COUNT(t.id)
FROM table t
WHERE t.player_id = 123
AND t.win_id = 123 /* player 123 won */
AND NOT EXISTS(SELECT *
FROM table t2
WHERE t2.player_id = 123
AND t2.win_id <> 123 /* player 123 lost */
AND t2.id > t.id /* lost occur after the win we look at */
)
推荐阅读
- mysql - 如何在 SQL 中使用 AVG 函数进行比较?
- vim - 在每个数字中插入减号
- blazor - Blazor 如何将外部组件事件添加到组件?
- vue.js - VueJs 3.0 NavBar 跨路线不粘
- reactjs - NextJS 页面仅在脚本执行后在浏览器中显示页面,尽管具有 defer 属性
- flutter - 如何在颤动中从文件路径播放视频
- r - 更改脚本以使用数据文件名/变量列表?
- kubernetes - 如何使用配置文件启动 kube-controller-manager?
- javascript - javascript window.prompt 或提示在 nativefier Electron 中不起作用
- scons - 如何获取为给定目标计算的所有源依赖项 SCons?