3

我有一个表,其中abc通常是相同的行。我有一个查询,它给了我每条独特的记录。我正在尝试获取每个返回的不同记录的重复记录的计数。

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

这里COUNT返回所有记录的计数。我正在寻找的是与唯一记录相同的记录数。

4

3 回答 3

3
 SELECT a,b,c,COUNT(*) FROM table GROUP BY a,b,c
于 2013-03-08T10:46:04.393 回答
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 中的单个表)。所以它检查相等然后计数。因为我们把 distinct 放在一个列上,所以所有的游戏都只用它来完成。我希望能上飞机。

于 2013-03-08T10:51:20.063 回答
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

于 2013-03-08T10:42:35.060 回答