计算 table 中的条目数

Count the number of entries in the table

我有一个 table allData

id     name       
1      meat
2      chicken
3      fish
4      chicken
5      fish
6      chicken     

和table相关数据

id        name
1         meat
2         fish

我想计算每个名字在 allData 中出现的总次数,但仅限于出现在 relevantData 中的名字。 IE。 我想要得到的结果:

id       name     count
1        meat     1
2        fish     2

我想到了查询:

Select count(*) from allData group by name

不确定我如何与 relevantData 相关联。有什么想法吗?

您可以尝试以下方法。

SELECT COUNT(*) FROM allData WHERE name in (SELECT name from relevantData) GROUP BY name

换个角度,你对relevantData感兴趣,那是你查询的基础。您可以使用关联子查询,无需使用 join 或 group-by:

SELECT rd.name, 
       (SELECT COUNT(*) FROM allData ad WHERE rd.name = ad.name) AS Count
FROM relevantData rd

Demo

只需将它们连在一起即可:

SELECT  a.id, a.name, COUNT(*) AS CntCol
FROM    allData a
        INNER JOIN relevantData r ON a.name = r.name
GROUP BY a.id, a.name

试试这个:

SELECT a.name, Count(1) AS TotalCount
FROM allData a
WHERE EXISTS(SELECT TOP 1 1 FROM relevantData WHERE a.name = name)
GROUP BY a.name

只需按id分组并检查它是否包含在相关数据中