2013-05-15 178 views
2

我从下面的查询MySQL的SELECT COUNT DISTINCT

SELECT co.mobility_theme, COUNT(DISTINCT ca.user_id) AS n 
FROM courses_apply AS ca LEFT JOIN dy41s_courses AS co ON ca.course_id = co.id 
WHERE ca.submission IS NULL AND ca.`call` LIKE '1b' 
GROUP BY co.mobility_theme 
ORDER BY co.mobility_theme ASC 

得到如下结果总(133)

mobility_theme n 

1 =>70 

4 =>18 

5 =>45 

我想要做的是:为每个移动主题(1,2和5),我有重复的用户,所以总唯一的user_id应该是(130),我无法通过(移动性主题)获得唯一的user_id组,任何帮助?

+0

没关系,但是你喜欢的子句是什么? – Drew

+0

它只是获得指定的“电话” – MMSA

+0

的记录我知道,但它不是'like' – Drew

回答

3

一种方法是任意选择一种移动性主题。这种方法选择最小值的那个:

select mobility_theme, COUNT(*) as Numusers 
from (select ca.user_id, MIN(co.mobility_theme) as mobility_theme 
     from courses_apply ca LEFT JOIN 
      dy41s_courses co 
      ON ca.course_id = co.id 
     WHERE ca.submission IS NULL AND ca.`call` LIKE '1b' 
     group by ca.user_id 
    ) caco 
group by mobility_theme 
+0

你让我的一天:)))))))))))))) – MMSA