mysql查詢根據部分字段去重

mysql有個關鍵字distinct用來去重的,但是使用時只能放在查詢字段的最前邊

如: SELECT DISTINCT user_id,age FROM t_user;

若不是放在最前邊,如: SELECT user_id, DISTINCT age FROM t_user; 

是會報錯的。


那麼如果我們只想根據age字段來去重,並且要查出user_id,就不能直接這樣執行。需要另找方法。


查閱mysql相關使用後,有個group by可以進行分組,那麼有個思路就是:分組然後去重。


具體看這個需求:


要查詢兩個表所有字段內容,並且根據第一張表的主鍵去重。


去重前sql:

   

SELECT
    a.album_id, a.album_name, a.view_lock, a.view_issue, a.view_key, a.user_id,
    p.photo_id,p.album_id,p.photo_desc,p.photo_url,p.update_time,p.delete_state
  
    FROM album a LEFT JOIN photo p ON a.album_id = p.album_id;


查詢結果:


解決:

   

SELECT
    a.album_id, a.album_name, a.view_lock, a.view_issue, a.view_key, a.user_id,
    p.photo_id,p.album_id,p.photo_desc,p.photo_url,p.update_time,p.delete_state ,COUNT(DISTINCT a.album_id)
    FROM album a LEFT JOIN photo p ON a.album_id = p.album_id GROUP BY a.`album_id`

結果:

別人的解決思路:

http://blog.csdn.net/guocuifang655/article/details/3993612
--------------------- 

轉自:作者:maoyuanming0806 
原文:https://blog.csdn.net/maoyuanming0806/article/details/77950392/ 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章