mysql - 受累积列数量限制

标签 mysql sql limit

假设我有一个包含 3 列的表格: id, row_type, row_score

我想选择第一行(或最新的)行,但根据获取的 id 的累积分数限制选择

示例

id | row_type | row_score
 1          a                  1
 2          a                  1
 3          b                  2
 4          c                  3
 5          a                  1
 6          b                  2
 7          a                  1
...

第一行的结果,累积分数限制为 4:

id | row_type | row_score
 1          a                  1
 2          a                  1
 3          b                  2

最佳答案

这个查询应该做你想做的。它使用一个变量来保持累积分数,然后在 HAVING 子句中使用它来限制返回的行:

SELECT t1.*, @cum_score := @cum_score + row_score AS cum_score
FROM table1 t1
JOIN (SELECT @cum_score := 0) c
HAVING cum_score <= 4
ORDER BY cum_score

输出:

id  row_type    row_score   cum_score
1   a           1           1
2   a           1           2
3   b           2           4

SQLFiddle Demo

关于mysql - 受累积列数量限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52698614/

相关文章:

mysql - 通过在 MYSQL 中添加 2 列值作为行来创建新列

Mysql LIMIT 使用 MATCH AGAINST

apache - .htaccess 中可以有多少个 RewriteRules 而不会出现问题?

mysql - mysql中Limit的使用

php - 比较 mysql 表中的列值

sql - T-SQL 2008 中的 REPLACE 函数与 T-SQL 2005 不同

mysql - SQL 返回包含与主键相关的外键的表列表

sql - MySQL:带有 LEFT JOIN 的 GROUP_CONCAT

php - 比较 SQL 语句 if else 样式

mysql - 获取列中具有连续数字的唯一 ID 列表