2015-07-02 38 views
0

用下面的查詢我只得到一個行,但我應該有2個:在SQL中查找重複項:但我只獲得一行而不是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 

這裏是我重複: 訪問列表REUTERS_access_in擴展許可證ICMP任何主機DAF-SUPE-1的日誌間隔600

訪問列表REUTERS_access_in擴展許可icmp任何主機DAF-SUPE-1日誌間隔600

我只檢索第1行。 如何修改我的查詢以獲取兩行?

非常感謝您的回覆!

回答

0

如您所寫的查詢將返回所有重複項,但不會顯示多個行,因爲您正在按所有組進行分組以確定您的重複行。 SQL永遠不會顯示這樣的dups。沒有理由,因爲他們是dups。現在,如果有不同的列,那些不在「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 
+0

先生您好,感謝,但......它不會改變任何事情:我仍然只顯示1行,沒有「計數」信息。我想看到更多的行,因爲我有重複的行(如果我有兩行相同,我想看到他們兩個)。你可以幫幫我嗎 ? – tom

+0

重讀我的整個答案。由於您最有可能在「GROUP BY」子句中包含所有表列,因此無法顯示完全重複的行。 SQL將看不到這個原因。您在SELECT子句中使用「Count(*)count」,以便查看有多少行。 –

+0

但我沒有看到任何計數信息。我沒有一個名爲「count」的值的列(這裏應該是2)。 – tom

相關問題