mysql 数据入库去重_MySQL中去重 distinct 的用法 ,数据库去重distinct「建议收藏」

发布时间:2025-12-09 13:47:02 浏览次数:4

一、distinct 位置

1. 单独的distinct只能放在开头,否则报错,语法错误

mysql>SELECTnickname,DISTINCT(openid)fromims_ewei_shop_member;

[SQL]SELECTnickname,DISTINCT(openid)fromims_ewei_shop_member;

[Err]1064–YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorresponds

toyourMySQLserverversionfortherightsyntaxtousenear‘DISTINCT(openid)

fromims_ewei_shop_member’atline1

2.现在把distinct放在开头

SELECTDISTINCT(openid),nicknamefromims_ewei_shop_member;

#查询成功

3.与其他函数使用时候,没有位置限制如下

SELECTnickname,count(DISTINCT(openid))fromims_ewei_shop_member;

#这种情况下是正确的,可以使用。

二、distinct用法

1.在count计算不重复的记录的时候能用到

SELECTCOUNT(DISTINCT(openid))fromims_ewei_shop_member;

#就是计算ims_ewei_shop_member表中openid不同的记录有多少条

2.在需要返回记录不同的如openid等具体值的时候可以用

SELECTDISTINCT(openid)fromims_ewei_shop_member;

#返回ims_ewei_shop_member表中不同的openid的具体的值

3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义

#无论是

SELECTDISTINCT(openid),nicknamefromims_ewei_shop_member;

#还是

SELECTDISTINCTopenid,nicknamefromims_ewei_shop_member;

#特别注意:

#实际上返回的是openid与nickname同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得openid和nickname都相同的才被排除了,与我们期望的结果不一样,我们期望的是openid不同被过滤

#在这种情况下,distinct同时作用了两个字段,openid,nickname

#这时候可以考虑使用group_concat()函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的

#同时我们还可以利用下面的方式解决以上遇到的歧义问题通过groupby分组

用distinct的时候,如果它有索引,mysql会把它转成group by的方式执行

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477