Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何统计mysql中两个相关列的出现次数_Mysql_Sql - Fatal编程技术网

如何统计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盘,每盘都保存

我需要帮助解决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-输家第一盘

所以我想知道胜利者赢了多少次,输了多少次。 在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,需要做一些分析,所以我必须从这种情况中获得最大的收益……我认为我们已经非常了解对方了。