MySQL:在行中计算唯一的值对

MySQL:在行中计算唯一的值对,mysql,select,count,unique,Mysql,Select,Count,Unique,我被一个我不知道如何解决的问题困住了。以下是我的表格“myTable”的外观: +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id

我被一个我不知道如何解决的问题困住了。以下是我的表格“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;

非常感谢您的任何建议!提前感谢。

当您需要计算不同的名称时,您需要使用
distinct
关键字

请尝试此查询

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

当您需要计算不同的名称时,您需要使用
distinct
关键字

请尝试此查询

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

谢谢Meherzad,它工作得很漂亮,为我省下了不少白发!!谢谢Meherzad,它工作得很漂亮,为我省下了不少白发!!