数据库有重复的值怎么去出重复

数据库一张视图中有用户表。其中用户有可能对用多个部门。怎么去除重复,只要一列就可以

clipboard.png

像这样的,一个人对应多个部门,怎么去重复,只要一个人就可以。

阅读 2.8k
2 个回答

分组就好了

select 用户名字段 from table group by 用户名字段

如果还想知道用户所在所有部门, 可以简单用 group_concat(部门字段),结果是 部门1,部门2 这样连接

select 用户名字段, group_concat(部门字段) as bumen from table group by 用户名

先通过group by + having把重复的查出来
然后按照自己删除的规则把重复的里面不需要删除的数据查出来
然后删除掉在重复数据里并且不在不需要删除的数据里的数据

举个栗子:

DELETE FROM xxx WHERE id IN (
    SELECT id FROM (
        SELECT id FROM xxx WHERE name IN (
            SELECT name FROM xxx GROUP BY name HAVING COUNT(1) > 1
        ) AND id NOT IN (
            SELECT MIN(id) FROM xxx GROUP BY name HAVING COUNT(1) > 1
        )
    ) as a
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进