2012-07-16 71 views
0

我有一个表data的列名number, start, end发现无:字段在表中出现两次或两次以上

我现在需要选择已经出现过两次的数字(number列字段)以上,然后指望他们出现的次数。

任何简单的方法来做到这一点?

实施例:-number ------- -------开始端----

 191   x   x 
     123   x   x 
     45    x   x 
     191   x   x 
     37    x   x 
     191   x   x 
     45    x   x 

所以,现在的结果应该是:2(191和45 - 两个重复两次或更多次)

回答

2
SELECT `number`, COUNT(`number`) AS count 
FROM `data` 
GROUP BY `number` 
HAVING COUNT(`number`) > 1 
ORDER BY COUNT(`number`) DESC; 

对于给定的一组输入值的,输出应为:

------------------ 
| number | count | 
------------------ 
| 191 | 3 | 
------------------ 
| 45 | 2 | 
------------------ 
+0

那么它是否给出了总共两个或更多的唯一编号:s? – user1424394 2012-07-16 15:27:54

+0

是的,'GROUP BY'将选择唯一的数字,'COUNT()'会给出它们出现的次数。 – hjpotter92 2012-07-16 15:28:53

+0

我用一个例子编辑了这个问题,以便更加清楚,所以它是完全一样的吗? – user1424394 2012-07-16 15:32:34

1
SELECT number, COUNT(1) 
FROM table 
GROUP BY number 
HAVING COUNT(1) >= 2; 
+1

临屋t不会选择出现两次的号码。 – hjpotter92 2012-07-16 15:24:29

+0

是的,谢谢指出,我已经编辑了我的回答 – Zbigniew 2012-07-16 15:25:22