zoukankan      html  css  js  c++  java
  • 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之前,不然会报错

  • 相关阅读:
    Linux find 用法示例
    [转载]进程的概念与结构
    linux vi命令详解
    vi快捷键必知必会
    vim分屏操作
    硬连接和软连接的区别
    javascript_console调试常用方法
    javascript_错误处理机制
    Array详解
    react--setState使用
  • 原文地址:https://www.cnblogs.com/fswhq/p/mysql_DISTINCT.html
Copyright © 2011-2022 走看看