我有一个表,其中a
、b
和c
通常是相同的行。我有一个查询,它给了我每条独特的记录。我正在尝试获取每个返回的不同记录的重复记录的计数。
SELECT DISTINCT
a,
b,
c,
COUNT(id) as counted
FROM
table
这里COUNT
返回所有记录的计数。我正在寻找的是与唯一记录相同的记录数。
我有一个表,其中a
、b
和c
通常是相同的行。我有一个查询,它给了我每条独特的记录。我正在尝试获取每个返回的不同记录的重复记录的计数。
SELECT DISTINCT
a,
b,
c,
COUNT(id) as counted
FROM
table
这里COUNT
返回所有记录的计数。我正在寻找的是与唯一记录相同的记录数。
SELECT a,b,c,COUNT(*) FROM table GROUP BY a,b,c
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 放在一个列上,所以所有的游戏都只用它来完成。我希望能上飞机。
啊,当我写这个问题时,我从重复中找出了这个——我想我会分享我的结果,因为它们与我得到的答案有很大不同。
我必须使用子查询来获取查询不明确的记录。然后,我可以在子查询的 WHERE 子句中使用第一个查询的结果。
SELECT DISTINCT
a,
b,
c,
(
SELECT
COUNT(id)
FROM
table_name t1
WHERE
t2.a = t1.a
) AS counted
FROM
table_name t2
这行得通。让我知道我的理解是否存在差距。