选择最后5行的总和

Tyl*_*den 3 mysql

我正在用PHP/MySQL构建一个小测验游戏.在提问之后,我想要一个屏幕来显示最后一轮中有多少被正确回答.

我在以下表格中存储它们是否被正确回答:

rowID | questionid | playerid | answercorrect |
1     | 1          | 1        | 1             |
2     | 2          | 1        | 1             |
3     | 3          | 1        | 1             |
4     | 4          | 1        | 1             |
5     | 5          | 1        | 0             |
6     | 6          | 1        | 1             |
7     | 7          | 1        | 1             |
Run Code Online (Sandbox Code Playgroud)

我想看看有多少最后的x(通常是5个)问题得到了正确回答.

我觉得这很简单.我正在尝试这个:

SELECT sum( answercorrect ) FROM `answersgiven` ORDER BY id DESC LIMIT 5 
Run Code Online (Sandbox Code Playgroud)

我认为这将总结answercorrect最后5行的列,给我4的答案,但它给了我7,这是所有行的结果.

我觉得我错过了一些明显的东西.这似乎是一件简单的事情.

有任何想法吗?

Sir*_*rko 12

试试这个:

SELECT sum(answercorrect) 
FROM (SELECT answercorrect FROM `answersgiven` ORDER BY rowID DESC LIMIT 5) t1
Run Code Online (Sandbox Code Playgroud)

示例小提琴

在您的查询中,该LIMIT子句会影响整体结果:首先对所有内容进行求和(导致一行 - 所有行的总和),然后获取前五行(如果可用)(这也只是一行) .

实现目标的最简单方法是首先选择前5行(在子选择中)然后总结.