2013-03-08 50 views
3

我有一個行,其中a,bc通常是相同的行。 我有一個查詢,讓我每一個獨特的記錄。我試圖獲得計數,返回每個不同記錄的重複記錄。獲取由DISTINCT查詢產生的重複行數

SELECT DISTINCT 
    a, 
    b, 
    c, 
    COUNT(id) as counted 
FROM 
    table 

COUNT這裏返回所有記錄的計數。我正在尋找的是與唯一記錄相同的記錄數。

回答

2
SELECT a,b,c,COUNT(*) FROM table GROUP BY a,b,c 
+0

這也工作。據我所知,同樣的結果和簡單的查詢。 – 2013-03-08 10:56:40

2

啊,原來是重複想通了這一個了,因爲我在寫這個問題 - 我想我會分享我的結果,因爲它們是從我得到了我的答案足夠不同。

我必須使用子查詢得到的查詢不重複的記錄。然後,我可以使用子查詢的WHERE子句中的第一個查詢的結果。

SELECT DISTINCT 
    a, 
    b, 
    c, 
    (
      SELECT 
       COUNT(id) 
      FROM 
       table_name t1 
      WHERE 
       t2.a = t1.a 
    ) AS counted 
FROM 
    table_name t2 

這是有效的。讓我知道我的理解是否存在差距。

從這個答案的幫助:https://stackoverflow.com/a/14110336/1270996

3
SELECT DISTINCT 
    a, 
    b, 
    c, 
    (
      SELECT 
       COUNT(id) 
      FROM 
       table_name t1 
      WHERE 
       t2.a = t1.a 
    ) AS counted 
FROM 
    table_name t2 

以上的子查詢所知道的行內的子查詢。在where子句t1和t2當作不同的表(這是一個在DB單表)的查詢。所以它檢查平等,然後計數。因爲我們爲一個專欄設置了獨特的功能,所以所有的遊戲都只用於完成。 我希望我能夠搭乘飛機。