Mysql 使用coalesce在数据库中查找重复项

Mysql 使用coalesce在数据库中查找重复项,mysql,coalesce,Mysql,Coalesce,我正在尝试检索ACL表中的重复项(我特意创建了一些) 我编写了一个查询来检索它们,但不幸的是,我的查询“无法完成任务”。我不获取重复项,而是返回表ACL的完整视图(如select*所做的),但对项目进行排序。复制品在里面,但它们并不像我想要的那样“孤立” 使用此查询,我只想检测重复项。 对我来说是重复的:每列中的信息完全相同(索引除外),例如: 然而,这对我来说不是重复的: 1 TOTO BLABLA 123 2 TOTO WHAOUH 123 我的MYSQL版本是5.

我正在尝试检索ACL表中的重复项(我特意创建了一些)

我编写了一个查询来检索它们,但不幸的是,我的查询“无法完成任务”。我不获取重复项,而是返回表ACL的完整视图(如select*所做的),但对项目进行排序。复制品在里面,但它们并不像我想要的那样“孤立”

使用此查询,我只想检测重复项。 对我来说是重复的:每列中的信息完全相同(索引除外),例如:

然而,这对我来说不是重复的:

1   TOTO    BLABLA  123
2   TOTO    WHAOUH  123
我的MYSQL版本是5.0.2

我已经在谷歌上搜索过了,但不幸的是,我无法让它以我想要的方式工作

SELECT * FROM `acl` t1, 
                        (SELECT `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv`
                          FROM `acl`
                          GROUP BY `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv`
                        ) t2
                        WHERE 
                        coalesce(t1.`vara`, '1') = coalesce(t2.`vara`, '1')
                        AND coalesce(t1.`varb`, '1') = coalesce(t2.`varb`, '1')
                        AND coalesce(t1.`varc`, '1') = coalesce(t2.`varc`, '1')
                        AND coalesce(t1.`vard`, '1') = coalesce(t2.`vard`, '1')
                        AND coalesce(t1.`vare`, '1') = coalesce(t2.`vare`, '1')
                        AND coalesce(t1.`varf`, '1') = coalesce(t2.`varf`, '1')
                        AND coalesce(t1.`varg`, '1') = coalesce(t2.`varg`, '1')
                        AND coalesce(t1.`varh`, '1') = coalesce(t2.`varh`, '1')
                        AND coalesce(t1.`vari`, '1') = coalesce(t2.`vari`, '1')
                        AND coalesce(t1.`varj`, '1') = coalesce(t2.`varj`, '1')
                        AND coalesce(t1.`vark`, '1') = coalesce(t2.`vark`, '1')
                        AND coalesce(t1.`varl`, '1') = coalesce(t2.`varl`, '1')
                        AND coalesce(t1.`varm`, '1') = coalesce(t2.`varm`, '1')
                        AND coalesce(t1.`varn`, '1') = coalesce(t2.`varn`, '1')
                        AND coalesce(t1.`varo`, '1') = coalesce(t2.`varo`, '1')
                        AND coalesce(t1.`varp`, '1') = coalesce(t2.`varp`, '1')
                        AND coalesce(t1.`varq`, '1') = coalesce(t2.`varq`, '1')
                        AND coalesce(t1.`varr`, '1') = coalesce(t2.`varr`, '1')
                        AND coalesce(t1.`vars`, '1') = coalesce(t2.`vars`, '1')
                        AND coalesce(t1.`vart`, '1') = coalesce(t2.`vart`, '1')
                        AND coalesce(t1.`varu`, '1') = coalesce(t2.`varu`, '1')
                        AND coalesce(t1.`varv`, '1') = coalesce(t2.`varv`, '1') 
                        ";  

非常感谢您的回复

为什么不直接使用
分组依据

SELECT `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv`
FROM `acl`
GROUP BY `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv`
HAVING COUNT(*) > 1;
如果要查看id值,最简单的方法是添加
组\u concat()


我这样解决了我的问题

SELECT count(*) count, `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, 
   `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, 
   `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv` FROM `acl` GROUP BY `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, 
     `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, 
     `varq`, `varr`, `vars`, `vart`, `varu`, `varv` HAVING COUNT(*) > 1

您好,先生,第一个查询给出1行,但我应该得到2行(因为重复)。第二个查询没有检索到任何内容。@tom。这两个查询应该完全相同,除了
组\u concat()
。它们应该返回相同数量的行。
SELECT group_concat(id) as ids,
       `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv`
FROM `acl`
GROUP BY `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv`
HAVING COUNT(*) > 1;
SELECT count(*) count, `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, 
   `varg`, `varh`, `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, 
   `varo`, `varp`, `varq`, `varr`, `vars`, `vart`, `varu`, `varv` FROM `acl` GROUP BY `vara`, `varb`, `varc`, `vard`, `vare`, `varf`, `varg`, `varh`, 
     `vari`, `varj`, `vark`, `varl`, `varm`, `varn`, `varo`, `varp`, 
     `varq`, `varr`, `vars`, `vart`, `varu`, `varv` HAVING COUNT(*) > 1