版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/83855536
MySQL 执行查询时,如果需要从记录中过滤多个重复字段,可通过以下方式
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
实现方式
- 关键点在于
COUNT(DISTINCT vs.name)
,DISTINCT
是 MySQL 用于过滤重复字段的关键字,但其默认只能紧跟在SELECT
之后 - 此处通过
COUNT()
函数将其包裹后在指定字段,即可实现过滤效果 - 注意点:在使用
COUNT(DISTINCT propertyName)
后,在查询末尾要通过GROUP BY propertyName
将对应字段分组 - 如果存在多个字段需要过滤,则将每一次过滤的结果作为数据来源再次筛选即可
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