就像标题所说,这是我能解释的最简单的方法。详细说明......
我首先需要找到重复次数最多的列c的值(大多数重复),然后SELECT * FROM t WHERE c=mostDuplicated
继续进一步......
这是我的数据:
SELECT * FROM t
a, b, c
- - -
1, 1, 1
2, 2, 1
3, 3, 1
4, 4, 2
5, 5, 3
因此,请忽略a&列中的值。 b完全,只关注专栏c。我需要找到列c中最重复的值(即1),然后只选择这些记录WHERE c = 1。如果可能的话,我想在一个查询中执行此操作。
答案 0 :(得分:5)
执行“分组依据”查询以计算c
的唯一值的数量,将其降序并仅选择顶行。然后使用输出作为子查询来选择具有特定值c
:
SELECT * FROM t WHERE c = (SELECT c FROM t GROUP BY c ORDER BY COUNT(*) DESC LIMIT 1)
答案 1 :(得分:4)
SELECT c FROM t GROUP BY c ORDER BY count(*) DESC LIMIT 1
答案 2 :(得分:1)
好吧,就像这样:
SELECT * FROM t WHERE c =
(SELECT c FROM
(SELECT c, count(c) as co
FROM t ORDER BY co DESC LIMIT 1))
希望这个帮助
答案 3 :(得分:1)
你走了,这有点令人费解:
SELECT
*
FROM
t
WHERE
(
c IN
(
SELECT c
FROM (
SELECT
c,
COUNT(c) as freq
FROM
t
GROUP BY
c
ORDER BY
freq DESC,
c ASC
LIMIT 1
) AS t2
)
)
基本上,它是这样的: 1.确定重复每个C值的频率 2.选择MAXimum重复的值 3.使用该值确定从整个表中选择*时要使用的C值。