获取mysql中不同重复ID的计数

时间:2012-11-09 12:46:38

标签: mysql count group-by distinct having

这是查询

select count(*), 
       ss.pname, 
       ttu.user_id, 
       ttl.location_name , 
       group_concat(em.customer_id), 
       count(em.customer_id)
  from seseal as ss, 
       track_and_trace_user as ttu, 
       track_and_trace_location as ttl, 
       eseal_mapping as em
 where ss.real_id=em.e_id 
   and em.user_id=ttu.user_id 
   and ttu.location_id=ttl.location_id
group by ss.pname, ttu.user_id, ttl.location_name 
having count(em.customer_id)>1 ;

以下是结果:

+----------+----------------+---------+---------------+------------------------------+-----------------------+
| count(*) | pname          | user_id | location_name | group_concat(em.customer_id) | count(em.customer_id) |
+----------+----------------+---------+---------------+------------------------------+-----------------------+
|        6 | Nokia N91      |       1 | Malad         | 60,51,60,51,58,58            |                     6 |
|        2 | SUPERIA 1000gm |       4 | Raichur       | 51,46                        |                     2 |
|        5 | SUPERIA 1000gm |       5 | west bengal   | 51,46,51,51,46               |                     5 |
|        2 | SUPERIA 500gm  |       4 | Raichur       | 59,59                        |                     2 |
|        3 | SUPERIA 500gm  |       5 | west bengal   | 59,46,59                     |                     3 |
+----------+----------------+---------+---------------+------------------------------+-----------------------+

现在问题是,正如您在结果集中看到的那样,某些行中的倒数第二列customer_ids是重复的,并且在某些行中是唯一的。最后一栏是对它的计数 现在我想要的是选择第3行,有两个客户ID,即51和46,这些在该行中是重复的,所以我这行的最后一列应该包含2.
类似地,对于最后一行,我的最后一列应该包含1,因为只有一个customer id是重复的,即59 因此,如果您了解确切的问题,那么第二行不应该是此结果集的一部分,因为它不包含任何重复的客户ID。

1 个答案:

答案 0 :(得分:1)

怎么样:

group_concat(distinct em.customer_id)

count(distinct em.customer_id)