mysql DISTINCT根據某字段去重同時查出其他字段


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`  

group by 必須放在 order by limit之前,不然會報錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。