2013-03-08 51 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单表)的查询。所以它检查平等,然后计数。因为我们为一个专栏设置了独特的功能,所以所有的游戏都只用于完成。 我希望我能够搭乘飞机。