在SQL中找到重复项:但我只得到一行而不是2行?

时间:2015-07-02 13:46:02

标签: mysql duplicates

使用以下查询我只得到一行,但我应该有2:

SELECT * 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

以下是我的副本: access-list REUTERS_access_in extended permit icmp any host DAF-SUPE-1 log interval 600

access-list REUTERS_access_in extended permit icmp any host DAF-SUPE-1 log interval 600

我只检索第一行。 如何修改我的查询以获取两行?

非常感谢您的回复!

1 个答案:

答案 0 :(得分:0)

您编写的查询将返回所有重复项,但不会显示多行,因为您要对所有人进行分组以确定重复的行。 SQL永远不会显示像这样的重复项。没有理由,因为他们是重复的。现在,如果存在不同的列,那些不在“GROUP BY”中,那么您只需将它们包含在SELECT语句中,然后SQL将显示它们。

您可以做些什么来查看特定GROUP BY的重复行数,您可以将计数作为选择的一部分返回,就像这样......

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