【问题标题】:MySQL: Count unique pairs of values in rowsMySQL:计算行中唯一的值对
【发布时间】:2013-06-03 10:53:28
【问题描述】:

我遇到了一个我不知道如何解决的问题。这是我的表“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(三个唯一的名字) cat 2(两个唯一名称) 鼠标 1(一个唯一的名称)

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

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

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

【问题讨论】:

    标签: mysql select count unique


    【解决方案1】:

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

    试试这个查询

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

    SQL FIDDLE

    |   ONE | CNT |
    ---------------
    |   cat |   2 |
    |   dog |   3 |
    | mouse |   1 |
    

    【讨论】:

    • 感谢 Meherzad,工作出色,为我节省了不少白发!!
    猜你喜欢
    • 2011-05-07
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多