sql:查询多字段/多列时怎么去重

我们知道单个字段去重时应该这样

SELECT DISTINCT
id
FROM
tablename

若我们想查id、nickname、sex等多个字段的同时也想去重怎么办呢

SELECT DISTINCT
id,nickname,sex
FROM
tablename

这样去查是错误的

因为是把id,nickname,sex视为一个整体来去重而不是仅依据id来去重

比如id一样但是nickname不一样的话 那么这条数据就还是会被统计到,这就会造成id的重复

去重方法1:

SELECT count(DISTINCT
id),*
FROM
tablename

group by id

去重方法2:

SELECT *
FROM
tablename

group by id

COUNT(DISTINCT id)

方法1会多一个字段出来,方法2不会

查询重复的id:

SELECT *
FROM tablename
GROUP BY id
HAVING
COUNT(id)>1


你可能感兴趣的:(sql:查询多字段/多列时怎么去重)