MySQL-求每个列中最常见的数的和,显示列的和在185和215之间的结果

MySQL-求每个列中最常见的数的和,显示列的和在185和215之间的结果,mysql,numbers,sum,between,Mysql,Numbers,Sum,Between,我为我的PowerBall游戏设置了以下sql查询。我不得不将其分为两个查询,因为PowerBall编号必须单独查询 我需要帮助的是如何将所有列NoA、NoB、NoC、NoD、NoE和NoPB相加,并使其显示最常见的6个数字集,其中所有列的总数介于185和215之间 作为一个示例场景,假设最上面的随机数是:1、10、30、15、6和20。总数是82。我不希望出现这种情况,因为所有列的总和不在185到215之间 以下是我到目前为止的代码片段: <code> $sql = mysql_q

我为我的PowerBall游戏设置了以下sql查询。我不得不将其分为两个查询,因为PowerBall编号必须单独查询

我需要帮助的是如何将所有列NoA、NoB、NoC、NoD、NoE和NoPB相加,并使其显示最常见的6个数字集,其中所有列的总数介于185和215之间

作为一个示例场景,假设最上面的随机数是:1、10、30、15、6和20。总数是82。我不希望出现这种情况,因为所有列的总和不在185到215之间

以下是我到目前为止的代码片段:

<code>
$sql = mysql_query("SELECT NoA, COUNT(*) AS Occurences FROM
(SELECT NoA FROM Numbers
UNION ALL
SELECT NoB FROM Numbers
UNION ALL
SELECT NoC FROM Numbers
UNION ALL
SELECT NoD FROM Numbers
UNION ALL
SELECT NoE FROM Numbers) t
GROUP BY NoA
ORDER BY Occurences DESC
LIMIT 5;");

while($row = mysql_fetch_array($sql))
{
echo "<tr>" . $row['NoA'] . "&nbsp;</tr>";
echo "<tr>" . $row['NoB'] . "&nbsp;</tr>";
echo "<tr>" . $row['NoC'] . "&nbsp;</tr>";
echo "<tr>" . $row['NoD'] . "&nbsp;</tr>";
echo "<tr>" . $row['NoE'] . "&nbsp;</tr>";
}
$sql2 = mysql_query("SELECT NoPB, COUNT(*) AS Occurences
FROM Numbers
GROUP BY NoPB
ORDER BY Occurences DESC
LIMIT 1;");
while($row2 = mysql_fetch_array($sql2))
{ 
echo "<font style='color: #FF0000;'><tr>" . $row2['NoPB'] . "</tr><br /><br /></font>";
}
</code>
提前感谢您的帮助


Jerome

FROM子句中的子查询对No*列求和,并将结果限制在185到215之间,然后主查询对这些和进行分组,对类似的和进行计数,然后按降序将结果限制在最大值6

SELECT snum, count(*) AS cc
    FROM (
        SELECT NoA + NoB + NoC + NoD + NoE + NoPB AS snum
            FROM Numbers
            WHERE NoA + NoB + NoC + NoD + NoE + NoPB > 185 
              AND NoA + NoB + NoC + NoD + NoE + NoPB < 215
    ) AS subnumquery
    GROUP BY snum
    ORDER BY cc DESC
    LIMIT 5;
这离你的目标有多近

或者这就是你要找的

SELECT CONCAT(NoA, ',', NoB, ',', NoC, ',', NoD, ',', NoE, ',', NoPB) AS allnum
    , sumnum, count(*) AS cc
    FROM (
        SELECT NoA, NoB, NoC, NoD, NoE, NoPB, 
            NoA + NoB + NoC + NoD + NoE + NoPB AS sumnum
            FROM Numbers
            WHERE NoA + NoB + NoC + NoD + NoE + NoPB > 185 
              AND NoA + NoB + NoC + NoD + NoE + NoPB < 215
    ) AS subnumquery
    GROUP BY allnum
    ORDER BY cc DESC
    LIMIT 5;
以下是我的测试数据库设置:

CREATE TABLE `Numbers` (
  `NoA` int(11) DEFAULT NULL,
  `NoB` int(11) DEFAULT NULL,
  `NoC` int(11) DEFAULT NULL,
  `NoD` int(11) DEFAULT NULL,
  `NoE` int(11) DEFAULT NULL,
  `NoPB` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `Numbers` VALUES (28,15,30,73,82,37),(51,74,28,14,28,93),(6,8,3,77,32,83),(81,80,14,5,83,92),(9,9,50,61,39,38),(33,9,15,6,27,92),(51,74,28,14,28,93),(6,8,3,77,32,83),(51,74,28,14,28,93),(57,52,2,3,10,83),(33,9,15,6,27,92),(51,74,28,14,28,93),(28,15,30,73,82,37),(75,16,2,45,20,83),(9,9,50,61,39,38),(51,74,28,14,28,93),(33,9,15,6,27,92),(2,26,7,53,28,76),(77,34,11,56,20,83),(51,74,28,14,28,93),(6,8,3,77,32,83),(33,9,15,6,27,92),(51,74,28,14,28,93);

你说显示最常见的6个数字是什么意思?我认为这对前5个数字有效,将其更改为限制为5。如何将第6个数字的NoPB列包括在内?非常感谢您迄今为止对bK的帮助!我不能说我完全清楚你的目标是什么。如果这还不行,请详细说明。很抱歉,我不够清楚,bK。我希望查看发生次数最多的一行,其中所有数字加起来都在185到215之间。这是一件很好的事情。杰罗门诺汗水。也许是我,但我还是模糊不清。这个怎么样,我写的回复是否符合你的要求?还是你要找的东西的一部分?如果没有,请描述哪些有效,哪些无效,哪些缺失。最近的两个似乎没有运行?只显示一个空白页。我将限制设置为6以包含NoPB列。我喜欢你在那里做的,但我不知道为什么它不起作用,奇怪。杰罗姆
+-----------------+--------+----+
| allnum          | sumnum | cc |
+-----------------+--------+----+
| 6,8,3,77,32,83  |    209 |  3 |
| 9,9,50,61,39,38 |    206 |  2 |
| 2,26,7,53,28,76 |    192 |  1 |
| 57,52,2,3,10,83 |    207 |  1 |
+-----------------+--------+----+
CREATE TABLE `Numbers` (
  `NoA` int(11) DEFAULT NULL,
  `NoB` int(11) DEFAULT NULL,
  `NoC` int(11) DEFAULT NULL,
  `NoD` int(11) DEFAULT NULL,
  `NoE` int(11) DEFAULT NULL,
  `NoPB` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `Numbers` VALUES (28,15,30,73,82,37),(51,74,28,14,28,93),(6,8,3,77,32,83),(81,80,14,5,83,92),(9,9,50,61,39,38),(33,9,15,6,27,92),(51,74,28,14,28,93),(6,8,3,77,32,83),(51,74,28,14,28,93),(57,52,2,3,10,83),(33,9,15,6,27,92),(51,74,28,14,28,93),(28,15,30,73,82,37),(75,16,2,45,20,83),(9,9,50,61,39,38),(51,74,28,14,28,93),(33,9,15,6,27,92),(2,26,7,53,28,76),(77,34,11,56,20,83),(51,74,28,14,28,93),(6,8,3,77,32,83),(33,9,15,6,27,92),(51,74,28,14,28,93);