计算 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
只需将它们连在一起即可:
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分组并检查它是否包含在相关数据中
我有一个 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
只需将它们连在一起即可:
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分组并检查它是否包含在相关数据中