Mysql 在多列中查找最常见的数字

Mysql 在多列中查找最常见的数字,mysql,Mysql,我需要在多列中找到三个最常见的数字(命名为S1、S2、S3、S4、S5和S6)。我知道我可以使用“联合所有”来完成这项工作,但我无法让它正常工作。此外,与$id对应的数字必须存在于其中一列中,但必须从最常见的数字列表中排除。我尝试了以下代码,但它不包括$id内容: 我还需要一件事。必须有一个where子句,其中还包括“where matchmal.goal='0'” 我认为这应该作为db示例: 如果$id为“91”,则输出应为数字13和15,因为它们是最常见的数字(它们存在于两行中)。根据您

我需要在多列中找到三个最常见的数字(命名为S1、S2、S3、S4、S5和S6)。我知道我可以使用“联合所有”来完成这项工作,但我无法让它正常工作。此外,与$id对应的数字必须存在于其中一列中,但必须从最常见的数字列表中排除。我尝试了以下代码,但它不包括$id内容:

我还需要一件事。必须有一个where子句,其中还包括“where matchmal.goal='0'”

我认为这应该作为db示例:


如果$id为“91”,则输出应为数字13和15,因为它们是最常见的数字(它们存在于两行中)。

根据您的要求,使用
UNION


SELECT * from (
SELECT goal, s1 AS tag, count(1) AS qty FROM `matchmal` where 91 IN (s1, s2, s3, s4, s5, s6) GROUP BY s1

UNION

SELECT goal, s2 AS tag, count(1) AS qty FROM `matchmal` where 91 IN (s1, s2, s3, s4, s5, s6) GROUP BY s2

UNION

SELECT goal, s3 AS tag, count(1) AS qty FROM `matchmal` where 91 IN (s1, s2, s3, s4, s5, s6) GROUP BY s3

UNION

SELECT goal, s4 AS tag, count(1) AS qty FROM `matchmal` where 91 IN (s1, s2, s3, s4, s5, s6) GROUP BY s4

UNION

SELECT goal, s5 AS tag, count(1) AS qty FROM `matchmal` where 91 IN (s1, s2, s3, s4, s5, s6) GROUP BY s5

UNION

SELECT goal, s6 AS tag, count(1) AS qty FROM `matchmal` where 91 IN (s1, s2, s3, s4, s5, s6) GROUP BY s6
) temp WHERE tag != 91 AND qty > 1 
ORDER BY qty DESC
按预期输出

goal    tag qty
0       13  2
0       15  2

演示参考

您能提供一个小数据集和预期结果吗?您所说的“$id”是什么意思?我看不出在您的查询
中必须有一个where子句,其中也包含“where matchmal.goal='0'”。
因为您使用的是
分组方式
,所以您可能需要
使matchmail=0
(顺便问一下,
matchmal.goal
中的
goal
是从哪里来的?)在这里你可以看到数据库结构:左边的列现在被命名为“goal”。尼科:是的。我不知道在哪里或如何包含它。如果一列包含$id(例如,如果S6是'91'),那么我想知道匹配行中最频繁的数字(在列S1、S2、S3、S4、S5和S6中)。@RonakDhoot:下面是一个sql fiddle示例:在该示例中:如果$id为'91',则输出应为数字13和15,因为它们是最常见的数字(它们存在于两行中)。此外,数字'91'应排除在搜索范围之外,因为这是$id。谢谢你,Ronak!列“目标”也需要包括在内。每行都需要设置为“1”。我在哪里添加“Where goals='1”子句?还有。这只是一个简单的问题,因为我从未做过类似的事情。我将如何加入另一个表?我想将玩家表ID与“qty”匹配“编号。Ie ID 13在players.ID中是Wayne Gretzky,ID 15在players.ID中是Mario.Lemieux。再次感谢!@Martin我已经更新了目标代码。谢谢Ronak!关于如何加入其他表有什么建议吗?例如,在“tag”上加入players.ID(并获取名字和姓氏)。”coumn.我添加了一个加入查询,请检查一下就可以了。谢谢你的加入查询,工作得很好!
goal    tag qty
0       13  2
0       15  2