去重排序----MySQL

一-去重後,按照漢字的拼音首字母順序排,英文和數字在前

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

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)  ;

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

發佈了39 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章