如何在多个列中找到最常见的值

时间:2019-04-24 06:55:15

标签: mysql group-by phpmyadmin

我只是想知道我可以使用哪些MySQL代码在一系列包含相似值的列中找到最常见的值。

SELECT       `column`,
             COUNT(`column`) AS `value_occurrence` 
    FROM     `my_table`
    GROUP BY `column`
    ORDER BY `value_occurrence` DESC
    LIMIT    1;

我知道我可以使用上面的代码在单个列中查找最常见的值,但是我将如何扩展它以在3列中查找值?

例如

第1、1、2、2、4列

第2列:1、3、2、1

第3列:1、2、2、2

结果:2

2 个答案:

答案 0 :(得分:0)

使用UNION将所有列移动到单个列中。

SELECT col, COUNT(*) AS value_occurrence
FROM (
    SELECT col1 AS col
    FROM my_table
    UNION ALL
    SELECT col2 AS col
    FROM my_table
    UNION ALL
    SELECT col3 AS col
    FROM my_table) AS x
GROUP BY column
ORDER BY value_occurrence DESC
LIMIT 1

答案 1 :(得分:0)

您要做的就是用星号(*)替换column中的COUNT(column)。这是用于访问表的所有记录的通用选择器。然后在您的ORDER BY子句中,指定allColumns作为您要排序的数据范围。

select allColumns, count(*) as value_occurrence from dataTable
group by allColumns
order by value_occurrence desc, allColumns
LIMIT 1;