Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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_Database_Select_Count - Fatal编程技术网

Mysql 获取同一表中两列之间的引用数

Mysql 获取同一表中两列之间的引用数,mysql,sql,database,select,count,Mysql,Sql,Database,Select,Count,我有一个问题,就是如何获取MySQL中两列之间某个值的出现次数 id1 col1 col2 2 5 3 3 3 4 4 2 1 5 1 3 6 null 2 我怎样才能得到下面两列之间发生的次数 value occurrence 3 3 1 2 2 2 4 1 5

我有一个问题,就是如何获取MySQL中两列之间某个值的出现次数

id1 col1 col2
2    5      3
3    3      4
4    2      1
5    1      3
6    null   2
我怎样才能得到下面两列之间发生的次数

value     occurrence
3                3
1                2
2                2
4                1
5                1

您可以
联合所有列
,然后应用
计数
聚合函数:

SELECT   val, COUNT(*) AS occurrence
FROM     (SELECT col1 AS val
          FROM   mytable
          UNION ALL
          SELECT col2 AS val
          FROM   mytable) x
GROUP BY val
ORDER BY occurrence DESC

根据实际数据(每个值的行数),预聚合可能更有效,只需尝试一下:

SELECT   val, SUM(occurrence) AS occurrence
FROM     (SELECT col1 AS val, COUNT(*) AS occurrence
          FROM   mytable
          UNION ALL
          SELECT col2 AS val, COUNT(*) AS occurrence
          FROM   mytable) x
GROUP BY val
ORDER BY occurrence DESC

非常感谢你!我一直在努力,直到今天。