如何统计mysql中两个相关列的出现次数
我需要帮助解决mysql中的问题如何统计mysql中两个相关列的出现次数,mysql,sql,Mysql,Sql,我需要帮助解决mysql中的问题 我的乒乓球成绩结构如下: W1 | L1 | W2 | L2 | W3 | L3 | W4 | L4 | W5 | L5 ------------------------------------------------ 6 7 6 1 7 6 6 1 6 1 5 7 6 7 6 1 7 5 6 7 6 7 7 5 最多可以玩5盘,每盘都保存
我的乒乓球成绩结构如下:
W1 | L1 | W2 | L2 | W3 | L3 | W4 | L4 | W5 | L5
------------------------------------------------
6 7 6 1 7 6
6 1 6 1
5 7 6 7
6 1 7 5 6 7 6 7 7 5
最多可以玩5盘,每盘都保存在自己的列W1-赢家第一盘,L1-输家第一盘
所以我想知道胜利者赢了多少次,输了多少次。
在Wx和Lx处于7-6或6-7关系的情况下,每次都会出现拉断
我知道如何获得至少有一个平局突破的所有行,但由于一行比赛可能有许多平局突破,我有计算它的问题。有什么想法吗
谢谢首先,您的表模式不是最好的。更好的模式是:
Match | Set | W | L
---------------------
1 1 6 7
1 2 6 3
1 3 5 7
1 4 3 6
2 1 6 7
2 2 6 7
2 3 6 2
2 4 3 6
SELECT count(*) FROM <table> WHERE (W=6 AND L=7) OR (W=7 AND L=6)
那么您的查询将是:
Match | Set | W | L
---------------------
1 1 6 7
1 2 6 3
1 3 5 7
1 4 3 6
2 1 6 7
2 2 6 7
2 3 6 2
2 4 3 6
SELECT count(*) FROM <table> WHERE (W=6 AND L=7) OR (W=7 AND L=6)
因此,我们可以通过SQL使您的表看起来类似于上面的表,然后将该SQL用作上面SQL中的子查询来进行欺骗。让你的看起来像我的:
SELECT 1 as set, W1 as W, L1 as L FROM <table>
UNION ALL
SELECT 2, W2 as W, L2 as L FROM <table>
UNION ALL
SELECT 3, W3 as W, L3 as L FROM <table>
UNION ALL
SELECT 4, W4 as W, L4 as L FROM <table>
UNION ALL
SELECT 5, W5 as W, L5 as L FROM <table>
将它们结合起来:
SELECT count(*)
FROM (
SELECT 1 as set, W1 as W, L1 as L FROM <table>
UNION ALL
SELECT 2, W2 as W, L2 as L FROM <table>
UNION ALL
SELECT 3, W3 as W, L3 as L FROM <table>
UNION ALL
SELECT 4, W4 as W, L4 as L FROM <table>
UNION ALL
SELECT 5, W5 as W, L5 as L FROM <table>
) as unionSub
WHERE (W=6 AND L=7) OR (W=7 AND L=6)
也许您可以从该联合查询中创建一个视图,并在将来使用它来引用此表,因为我可以想象您最终会经常使用它。首先,您的表模式不是最好的。更好的模式是:
Match | Set | W | L
---------------------
1 1 6 7
1 2 6 3
1 3 5 7
1 4 3 6
2 1 6 7
2 2 6 7
2 3 6 2
2 4 3 6
SELECT count(*) FROM <table> WHERE (W=6 AND L=7) OR (W=7 AND L=6)
那么您的查询将是:
Match | Set | W | L
---------------------
1 1 6 7
1 2 6 3
1 3 5 7
1 4 3 6
2 1 6 7
2 2 6 7
2 3 6 2
2 4 3 6
SELECT count(*) FROM <table> WHERE (W=6 AND L=7) OR (W=7 AND L=6)
因此,我们可以通过SQL使您的表看起来类似于上面的表,然后将该SQL用作上面SQL中的子查询来进行欺骗。让你的看起来像我的:
SELECT 1 as set, W1 as W, L1 as L FROM <table>
UNION ALL
SELECT 2, W2 as W, L2 as L FROM <table>
UNION ALL
SELECT 3, W3 as W, L3 as L FROM <table>
UNION ALL
SELECT 4, W4 as W, L4 as L FROM <table>
UNION ALL
SELECT 5, W5 as W, L5 as L FROM <table>
将它们结合起来:
SELECT count(*)
FROM (
SELECT 1 as set, W1 as W, L1 as L FROM <table>
UNION ALL
SELECT 2, W2 as W, L2 as L FROM <table>
UNION ALL
SELECT 3, W3 as W, L3 as L FROM <table>
UNION ALL
SELECT 4, W4 as W, L4 as L FROM <table>
UNION ALL
SELECT 5, W5 as W, L5 as L FROM <table>
) as unionSub
WHERE (W=6 AND L=7) OR (W=7 AND L=6)
也许您可以从该联合查询中创建一个视图,并在将来使用它来引用此表,因为我可以想象您最终会经常使用它。当您使用lemons make lemmonade时。这并不容易,但也许能帮你达到目的 输出
当你吃柠檬时,做柠檬汁。这并不容易,但也许能帮你达到目的 输出
所以我的乒乓球成绩结构如下:是的。解决这个问题。请参阅标准化。您对网球成绩结构有何建议?您将数据存储与数据检索和显示混为一谈。一个典型的结构可能是:比赛id、设置编号、球员1分、球员2分谢谢你的反馈,我认为我们彼此不理解。如果我从头开始创建数据库模型,我们可以讨论数据库结构,但是我收到了这个sql,需要做一些分析,所以我必须从这种情况中获得最大的收益……我认为我们已经完全了解对方了。所以我有一个乒乓球结果的结构,如下所示:是的。解决这个问题。请参阅标准化。您对网球成绩结构有何建议?您将数据存储与数据检索和显示混为一谈。一个典型的结构可能是:比赛id、设置编号、球员1分、球员2分谢谢你的反馈,我认为我们彼此不理解。如果我从头开始创建数据库模型,我们可以讨论数据库结构,但是我收到了这个sql,需要做一些分析,所以我必须从这种情况中获得最大的收益……我认为我们已经非常了解对方了。