如何从MYSQL中的不同值一列获取计数

时间:2015-09-03 13:05:14

标签: mysql

我有一张这样的表:

id     2      3

1,   14406,  2189
2,   14428,  2191,
3,   14442,  2192,
4,   14441,  2192,
5,   14441,  2192,

我想知道如果有可能得到数,那么我可以告诉第二列和第三列相同的字符串出现多少次。我看到第一个字符串是唯一的,所以它出现1次。与2相同。在第三个字符串中,2列是唯一的,因此它意味着该行也是唯一的。但第4和第5个字符串是相同的,我想显示它在我的表中出现2次。我怎么算呢?我应该使用Group by或类似子查询吗?

5 个答案:

答案 0 :(得分:1)

首先,第2列和第3列分组,以便为​​每个不同的对获取一条记录。对于每个对,您需要所有ID,因此使用 GROUP_CONCAT 构建一串ID。然后,只使用 HAVING 子句保留多次出现的对。

select col2, col3, group_concat(id) as ids
from mytable
group by col2, col3
having count(*) > 1;
col2   col3   ids  
14441  2192   4,5

(这实际上是泼水的答案,所以你可以接受。我只是觉得解释所涉及的步骤会很好。)

答案 1 :(得分:0)

也许是这样的:

select `2`, `3`, count(*)
from (select distinct `2`, `3` from your_table) as a
group by `2`, `3`
having count(*) > 1

答案 2 :(得分:0)

试试这个:

SELECT count(id) as count_times
FROM table 
WHERE column1=column2

答案 3 :(得分:0)

select group_concat(id), count(*) c 
    from thetable 
  group by `2`, `3` 
  having c > 1

结果

group_concat(id)    c
4,5                 2

答案 4 :(得分:0)

select 2,count(*)
from my_table
group by
2