尽管这个问题是两年前提出的,但解决方案并未使用 group_concat。因此,请在表格中保持简短
id name
1 Tim
2 Sam
3 Bob
4 Joe
5 Ali
6 Kay
7 Bob
8 Joe
运行以下内容
select name, count(*) c, group_concat(id) rows
from table
group by name
having c > 1;
给出
name c rows
Bob 2 3,7
Joe 2 4,8
是否可以在不编写脚本的情况下从我的表中删除第 3、7、4 和 8 行?我认为我确实需要使用 group_concat 因为实际上我的“名称”列是表中三列的串联。
最佳答案
SELECT count(`access`.id) as
extra_access,`access`.perm_role_id,group_concat(temp.extra_id) as extra_ids
FROM `access`
INNER JOIN(
SELECT `access`.id,perm_role_id,perm_module_id,group_concat(id) as extra_id
FROM `access`
GROUP BY perm_role_id,perm_module_id
HAVING COUNT(id) =1
)temp ON access.id= temp.id GROUP BY perm_role_id
为此再次使用 join 并再次 concat
关于mysql - 删除 mysql group_concat 选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38227681/