MySQL,SELECT * FROM t WHERE c = {最重复的条目}

时间:2011-12-16 17:57:31

标签: mysql

就像标题所说,这是我能解释的最简单的方法。详细说明......

我首先需要找到重复次数最多的列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。如果可能的话,我想在一个查询中执行此操作。

4 个答案:

答案 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值。