下面是我在 table 中的内容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
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
;