0

我遇到了一个我不知道如何解决的问题。这是我的表“myTable”的样子:

+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| one      | varchar(10) | YES  |     | NULL    |                |
| two      | varchar(10) | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

mysql> SELECT * FROM myTable; 

+----+-----------------+------------+
| id | one             | two        |
+----+-----------------+------------+
|  1 | cat             | steve      |
|  2 | cat             | steve      |
|  3 | cat             | adam       |
|  4 | dog             | john       |
|  5 | dog             | adam       |
|  6 | dog             | alice      |
|  7 | mouse           | peter      |
|  8 | mouse           | peter      |
|  9 | mouse           | peter      |
+----+-----------------+------------+

我所追求的是一个查询,对于“一”中的每个唯一值,我都会给出“二”中唯一值的计数,即给我:狗 3(三个唯一名称)猫 2(两个唯一名称)鼠标 1 (一个唯一的名字)

我已经四处搜索,但不知道如何找到正确的答案,并得到了:

SELECT one, two, COUNT(two) AS nr FROM myTable GROUP BY one, two ORDER BY one;

任何建议都非常感谢!提前致谢。

4

1 回答 1

4

由于您需要计算不同的名称,您需要使用distinct关键字。

试试这个查询

select 
   one,  
   count(distinct two) as cnt 
from 
   tbl 
group by 
   one

SQL 小提琴

|   ONE | CNT |
---------------
|   cat |   2 |
|   dog |   3 |
| mouse |   1 |
于 2013-06-07T07:51:23.077 回答