我只是想知道我可以使用哪些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
答案 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;