在使用sql查询中,经常需要去重,去重分两种,一种比较简单的是整条数据都重复,直接使用distinct关键字就可以搞定,如:
select distinct user_name from log
这样可以将log表中所有的user_name取出来,并不会出现重复,
但是如果要同时多查一些其他字段,distinct就不好使了,如:
select distinct user_name,add_time from log
由于log的添加时间不一样,所以查询出的记录并不完全一样,所以distinct不会过滤掉任何数据.
这样的情况我们要如何搞定呢?
select * from log_contacts where id in (select max(add_time) as add_time,user_name from log group by user_name)
这样就得出了user_name不重复的所有数据,我用到了max,得到的是最新数据,如果是min,则取出来的就是最老的数据了~~~