去重可以采用两种方法: DISTINCT
和 GROUP BY
DISTINCT
有如下的一张表:
1 | select distinct name from A |
执行后结果如下:
1 | select distinct name, id from A |
这样是同时匹配 name
和 id
,也就是说,只有 name
和 id 都相同才会被去重.
GROUP BY
1 | SELECT id FROM t1 GROUP BY t1.id WHERE t1.name = "test_name" |
这样可以将 t1 的数据按照 id 来分组,根据 where 条件查询,并返回分组第一条的 id,
如果要返回每个分组里面最大的 id,可以借助 max 函数:
1 | SELECT max(id) FROM t1 GROUP BY t1.id WHERE t1.name = "test_name" |
需要注意的是,id 的数据类型不能是 varchar
类型,最好是int
等.