数据库一张视图中有用户表。其中用户有可能对用多个部门。怎么去除重复,只要一列就可以
像这样的,一个人对应多个部门,怎么去重复,只要一个人就可以。
先通过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
);
754 阅读
1 回答570 阅读
分组就好了
如果还想知道用户所在所有部门, 可以简单用 group_concat(部门字段),结果是 部门1,部门2 这样连接