mysql - 计算来自不同列的 SQL 记录
问题描述
我正在开发一个投票/竞赛系统(PHP 和 SQL),用户需要在其中选择他们最喜欢的 5 个候选人。他们最喜欢的一号得到 5 分,他们最喜欢的二号得到 4 分,以此类推。
投票示例:
C = 候选人
C_3 5分 C_1 4 分 C_5 3分 C_2 2 分 C_4 1分
所有投票都将存储在 MySQL 表中,如 sow:
ID 5_POINTS 4_POINTS 3_POINTS 2_POINTS 1_POINTS 1 C_4 C_2 C_1 C_5 C_3 2 C_5 C_3 C_2 C_4 C_1 3 C_4 C_1 C_3 C_5 C_2 4 C_1 C_4 C_2 C_3 C_5
基于以上投票的排名应该是:
1. 候选人 4 - 16 分 2. 候选人 1 - 13 分 3. 候选人 2 - 11 分 4. 候选人 3+5 - 10 分
怎么可能得到像上面这样的查询输出?我尝试了多种东西,但没有任何效果。如果有人能指出我正确的方向,那就太好了......
解决方案
您可以按以下格式保存记录
ID CANDIDATE POINTS
1 C_4 5
2 C_2 4
3 C_1 3
4 C_5 2
5 C_3 1
6 C_5 5
7 C_3 4
8 C_2 3
9 C_4 2
10 C_1 1
11 C_4 5
12 C_1 4
13 C_3 3
14 C_5 2
15 C_2 1
16 C_1 5
17 C_4 4
18 C_2 3
19 C_3 2
20 C_5 1
这样,您可以通过总结他们的积分来获得排名靠前的人,例如SELECT sum(Points) from tablename
推荐阅读
- xml - MSXML2 丢弃编码?
- azure - Azure Devops 似乎未在同一帐户上连接到 Azure 门户
- javascript - react const中的目标片段
- facebook - Facebook 是否需要重新认证?
- jenkins - 循环中的 Jenkins 并行脚本使用错误的变量
- python - 如何重复更新 python 字典而不丢失另一个字典中的键的原始数据?
- html - 图片未显示在 GitHub 托管的网站上
- javascript - 为什么使用await&EventEmitter时nodejs程序退出?
- c# - 如何通过 CLI 更新 UWP 项目的 nuget 包?
- reactjs - Reactjs 事件/操作按钮未按预期切换