计算来自不同列的SQL记录

我正在开发一个投票/竞赛系统(PHP和SQL),用户需要选择他们的前5名最喜欢的候选人。他们最喜欢的第一名得5分,他们最喜欢的第二名得4分。

投票示例:

C =候选人

C_3 5-points
C_1 4-points
C_5 3-points
C_2 2-points
C_4 1-points

所有投票将存储在MySQL表中,例如母猪:

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. Candidate 4 - 16 Points
2. Candidate 1 - 13 Points
3. Candidate 2 - 11 Points
4. Candidate 3+5 - 10 Points

如何获得如上所述的查询输出? 我尝试了多种方法,但没有任何效果。如果有人能指出我正确的方向,那就太好了……

iCMS 回答:计算来自不同列的SQL记录

您可以按以下格式保存记录

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

本文链接:https://www.f2er.com/2000162.html

大家都在问