mysql - 查找每列中最常见的值

标签 mysql max

下面是表 myTable 中的内容。

+--------+--------+--------+--------+
| value1 | value2 | value3 | value4 |
+--------+--------+--------+--------+
|   9    |   4    |   3    |   3    |
|   1    |   2    |   9    |   3    |
|   1    |   2    |   3    |   4    |
|   1    |   2    |   3    |   4    |
+--------+--------+--------+--------+

我想要输出为

+--------+--------+--------+--------+
| value1 | value2 | value3 | value4 |
+--------+--------+--------+--------+
|   1    |   2    |   3    |   4    |
+--------+--------+--------+--------+

value1=1 因为 1 在该列中是三次。

value2=2 因为 2 在该列中是三次。

value3=3 因为 3 在该列中是三次。

value4=4 因为 4 是该列中的两倍,并且是该列中所有常见数字的最大数字。

注意:value4 最常见的值为 3 和 4。在输出中我应该得到 4,因为 4 是 3,4 中最大的。

我可以在mysql中实现这个吗?

更新 1

Table at SQL Fiddle

更新2

我也在这里列出了答案,这样就不需要继续 js-fiddle 了。 (根据 @ypercube 的回答)

SELECT
  ( SELECT value1
    FROM myTable
    GROUP BY value1
    ORDER BY COUNT(*) DESC
           , value1 DESC
    LIMIT 1
  ) AS value1,

  ( SELECT value2
    FROM myTable
    GROUP BY value2
    ORDER BY COUNT(*) DESC
           , value2 DESC
    LIMIT 1
  ) AS value2,

  ( SELECT value3
    FROM myTable
    GROUP BY value3
    ORDER BY COUNT(*) DESC
           , value3 DESC
    LIMIT 1
  ) AS value3,

  ( SELECT value4
    FROM myTable
    GROUP BY value4
    ORDER BY COUNT(*) DESC
           , value4 DESC
    LIMIT 1
  ) AS value4
;

最佳答案

SELECT
  ( SELECT value1
    FROM myTable
    GROUP BY value1
    ORDER BY COUNT(*) DESC
           , value1 DESC
    LIMIT 1
  ) AS value1,

  ( SELECT value2
    FROM myTable
    GROUP BY value2
    ORDER BY COUNT(*) DESC
           , value2 DESC
    LIMIT 1
  ) AS value2,
...
  ( SELECT valueN
    FROM myTable
    GROUP BY valueN
    ORDER BY COUNT(*) DESC
           , valueN DESC
    LIMIT 1
  ) AS valueN
;

SQL-Fiddle:test-2

关于mysql - 查找每列中最常见的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10815268/

相关文章:

SQL:如果字段不为空,我如何按字段排序,否则使用另一个字段

algorithm - 如何找到字符串可能具有的对的最大值?

MySQL 使用 Group By 选择最大出现次数

Java:从数组切片中查找最大值的索引

mysql - 选择 categoryId 属于 2 个或更多值的行

sql - 使用一个查询创建汇总结果

mysql - 有没有一种方法可以选择一个值并将其他相同的值转换为 null

excel - 列中子字符串的最大值

javascript - 数组内数组的最高值

mysql - 为什么这个sql中的table join type是ALL?