在SQL中计数“唯一”重复项

在SQL中计数“唯一”重复项,sql,Sql,我对SQL很陌生 当我有这样的清单时 +----+------+ | id | name | +----+------+ | 1 | Mike | +----+------+ | 1 | Mike | +----+------+ | 2 | Mike | +----+------+ | 2 | Mike | +----+------+ | 2 | Mike | +----+------+ | 5 | Sam | +----+------+ | 6 | Sam | +----+-

我对SQL很陌生

当我有这样的清单时

+----+------+
| id | name |
+----+------+
| 1  | Mike |
+----+------+
| 1  | Mike |
+----+------+
| 2  | Mike |
+----+------+
| 2  | Mike |
+----+------+
| 2  | Mike |
+----+------+
| 5  | Sam  |
+----+------+
| 6  | Sam  |
+----+------+
| 7  | Sam  |
+----+------+
| 7  | Sam  |
+----+------+
我想数一数有多少独特的话筒和SAM。因此,输出将是

+------+---+
| Mike | 2 |
+------+---+
| Sam  | 3 |
+------+---+
我该怎么做

编辑:

这只是我问题的一个例子。代码类似于selectid,name FROM id,name WHERE某些条件

我尝试了一些东西,比如选择id,name,COUNT*From id,name,其中一些条件按id分组,name

输出不是我想要的。它只计算有多少麦克风和山姆。但我想知道有多少独特的话筒和SAM

SELECT name, COUNT(DISTINCT id) AS cnt
FROM mytable
GROUP BY name
HAVING COUNT(DISTINCT id) > 1
数据库服务器的语法可能会有所不同,但要点是相同的:计算每个名称的唯一ID值的数量,筛选具有多个ID值的名称

如果您的数据库服务器没有COUNT DISTINCT:


你试过写一篇精选的声明吗?对不起,我不知道你的意思。我是通过课程的Select语句得到的请发布Select语句尝试与GROUP BY一起选择,并与我们分享您的尝试。这个案例只是一个例子。它将是SELECT id,name FROM id,name WHERE某些条件为什么COUNTDISTINCT id>1?我假设,虽然示例中没有显示,但op提供的主题中建议了,但他在寻找重复项。这些将有一个大于1的COUNTDISTINCT id。啊,几乎就是这样!只是没有HAVING条款。我需要那种独特的,完全没有想到的。非常感谢你
SELECT name, COUNT(*) AS cnt
FROM (SELECT DISTINCT id, name
      FROM mytable)
GROUP BY name
HAVING COUNT(*) > 1