一-去重后,按照汉字的拼音首字母顺序排,英文和数字在前
select DISTINCT t.name from ymw_goods t order by convert(t.name using gbk) collate gbk_chinese_ci;
二----去重后,按最新的时间顺序来拍
1:最简单,且字段全部相同,排除其他字段不同;
先对表按照时间desc排序,在查询该层使用group by 语句,它会按照分组将你排过序的数据的第一条取出来
select MAX(id)id,name ,MAX(createDate)createDate from (select * from ymw_goods order by createDate desc) a group by a.name order by createDate desc
例如:
select MAX(id)id,company,MAX(create_time)create_time
from (select * from ymw_transport_company order by create_time desc) a
where a.status = 1
and a.company_id = #{companyId,jdbcType=VARCHAR}
group by a.company order by create_time desc
2:使用not exists,该方法通过相同名字的不同创建的时间进行比较
select id,name,createDate from ymw_goods a
where not exists (select * from ymw_goods b where a.name = b.name and a.createDate< createDate) ;
例如:
select a.id, a.company,a.create_time,a.status,a.company_id
from ymw_transport_company a
where not exists (select * from ymw_transport_company b where b.company = a.company and
a.create_time< b.create_time)
and a.status = 1
and a.company_id = '7e04d3bf285c11ea8b534ccc6a4c5cd5'
order by a.create_time desc
3:内关联
select * from ymw_goods a
inner join (
-- 先查询出最后一条数据的时间
select id,name, MAX(createDate ) create_date from ymw_goods group by name
) b on a.name = b.name and a.createDate = b.createDate