我有一张这样的表:
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或类似子查询吗?
答案 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