MySQL 过滤多个重复字段

MySQL 执行查询时,如果需要从记录中过滤多个重复字段,可通过以下方式

实现方式

  1. 关键点在于 COUNT(DISTINCT vs.name)DISTINCT 是 MySQL 用于过滤重复字段的关键字,但其默认只能紧跟在 SELECT 之后
  2. 此处通过 COUNT() 函数将其包裹后在指定字段,即可实现过滤效果
  3. 注意点:在使用 COUNT(DISTINCT propertyName) 后,在查询末尾要通过 GROUP BY propertyName 将对应字段分组
  4. 如果存在多个字段需要过滤,则将每一次过滤的结果作为数据来源再次筛选即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT
	vvs.id,
	vvs.name,
	vvs.mobile,
	COUNT(DISTINCT vvs.mobile)
FROM (
	SELECT
		vs.id,
		vs.name,
		vs.mobile,
		COUNT(DISTINCT vs.name)
	FROM
		pt_visitor_survey vs
	WHERE
		vs.survey_id = 1
	GROUP BY
		vs.name
) vvs
GROUP BY
	vvs.mobile