我試圖計算具有值的連續行數。舉一個簡單的例子,考慮拋出2個骰子,其值爲1-12。我想要得到具有相同總數的連續行的最高序列值的表格。這裏有一個表定義,存儲過程來填充表,並執行存儲過程的命令:特定值的序列MySql表
CREATE TABLE `Dice_throws` (
`idx` int(11) NOT NULL AUTO_INCREMENT,
`Dice1` tinyint(1) DEFAULT NULL,
`Dice2` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`idx`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
---------------------------------
DELIMITER $$
CREATE PROCEDURE InsertDiceThrows(IN NumRows INT)
BEGIN
DECLARE i INT;
SET i = RAND(12345); /* use the same seed */
SET i = 1;
START TRANSACTION;
WHILE i <= NumRows DO
INSERT INTO Dice_throws(Dice1, Dice2) VALUES (CEIL(RAND() * 6), CEIL(RAND() * 6));
SET i = i + 1;
END WHILE;
COMMIT;
END$$
DELIMITER ;
-----------------------------
call InsertDiceThrows(2000);
如果選擇合計(SELECT Dice1, Dice2, Dice1+Dice2 FROM Dice_throws order by idx;
)的名單,然後我會得到2000行,這可爲實例2,5,12,6,7,4,8,8,8,5,11,6,6,
..等等。 在它的端我想要的表是這樣的:
Tot Seq
1 2
2 2
3 4
4 3
5 7
6 8
7 9
8 4
9 2
10 1
11 2
12 1
因此,這表明,在連續的行,其中合計爲4是3,並且連續8行,其中總是最大序列6等所以我想爲每個可能的結果找到總數相同的最高滾動順序。 我明顯可以在PHP中做到這一點(我已經使它與PHP的工作),只需選擇合計,然後循環結果集,但我想知道是否有一些完全在SQL中完成它的好方法。 感謝您提供任何提示或解決方案。
如果我們隨機填充一個表,我們會用不同的數據從您設置爲結束。因此,請提供適當的INSERT語句和相應的期望結果。我相信我們不需要看到2000行。假裝它是一個單面,六面骰子,我敢肯定,幾十行就足夠了。此外,如果您專業地賭博,您可能想要鎖定以下重要事實:用兩個骰子可實現的最低分數是...... 2! – Strawberry
感謝您的提示。我對任何一組的實際結果都不感興趣,我有興趣瞭解如何實現它。 –