您好,我在 mysql 数据库上有下表。
USER_ID SCORE
5 0
5 1
5 1
5 1
5 1
5 1
5 1
5 0
5 0
5 0
5 1
5 1
5 1
5 0
5 0
5 1
5 1
5 0
5 0
此数据中的预期结果最高分是 6。
我将如何获得它?
最佳答案
以下查询可能会完成这项工作:
SELECT
MAX(max_occurence_tracker)
FROM
(
SELECT
*,
IF (@prev = score ,@c := @c + 1,@c := 0 ) max_occurence_tracker,
@prev := score
FROM otable,(SELECT @prev := - 1 ,@c := 1) var
) t;
注意:我将表名用作otable
。
警告:如果您的表中有主键,则在该主键
字段上使用排序依据。否则你可能会得到随机行为。
无法添加 SQL FIDDLE。
所以这里有一些测试数据。您可以检查查询:
DROP TABLE IF EXISTS `otable`;
CREATE TABLE `otable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`score` int(11) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `otable` VALUES ('1', '5', '0');
INSERT INTO `otable` VALUES ('2', '0', '1');
INSERT INTO `otable` VALUES ('3', '0', '1');
INSERT INTO `otable` VALUES ('4', '0', '1');
INSERT INTO `otable` VALUES ('5', '0', '1');
INSERT INTO `otable` VALUES ('6', '0', '1');
INSERT INTO `otable` VALUES ('7', '0', '1');
INSERT INTO `otable` VALUES ('8', '0', '0');
INSERT INTO `otable` VALUES ('9', '5', '0');
关于MySQL:获取最大连续出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36418885/