程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL去重顯示指定字段信息

MySQL去重顯示指定字段信息

編輯:MySQL綜合教程

MySQL去重顯示指定字段信息   在使用MYSQL的select distinct name from table語句時,輸出的只是去重之後name字段的信息,而希望的是能夠輸出考生ID、考試時間、考試成績等的信息。使用  

1
select
 distinct name, sorce from table

 

結果發現去重不起作用,因為MYSQL認為要sorce和name同時重復才會去除。 最終解決辦法如下:  
1
select
 *, count(distinct
 name) from table group by name

 

如果SQL語句還有limit,order by等條件,必須放在group by後面。 這樣就達到了既去重,又能夠輸出更多字段信息的目的.   SELECT語句,去除某個字段的重復信息,例如:  表名:table 
id uid username message dateline 
1 6  a    111    1284240714(時間戳) 
2 6  a    222    1268840565 
3 8  b    444    1266724527 
4 9  c    555    1266723391 

 

執行語句(去除username字段重復信息並按時間排序):   
SELECT * 
FROM table a INNER JOIN ( SELECT max( dateline ) AS dateline 
FROM table GROUP BY uid ) b ON a.dateline = b.dateline 
GROUP BY id ORDER BY a.dateline DESC 

 

  結果: 
id uid username message dateline 
1 6  a    111    1284240714(時間戳) 
3 8  b    444    1266724527 
4 9  c    555    1266723391 

 

此語句用於顯示最新記錄信息,在一個區域內不允許某個信息(例如:用戶)同時出現多次(一次以上)。  後記:效率問題  開始用了個這語句: 
select * from table where dateline IN ( select max(dateline) from table GROUP BY uid ) ORDER BY dateline DESC 

 

  IN:當處理數據量比較大的時候,就沒效率可言了,所以優化成內聯,計算下快了6倍多。。。  繼續條效率就加索引了~~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved