如何修改MySQL查询以计算值在DB表/结果中出现的次数?

如何修改MySQL查询以计算值在DB表/结果中出现的次数?,mysql,sql,join,count,Mysql,Sql,Join,Count,以下数据库结果/表是通过使用下面的SQL查询将两个表连接在一起创建的。我还想做的是显示第三列,它计算某个值在主类别列中包含的次数。在底部的表格中可以看到期望结果的示例,其中第三列显示了“主要类别1”出现的次数-在本例中为8次,“主要类别2”出现6次。有人知道我需要对现有查询做什么才能做到这一点吗?它是否涉及分组依据和计数 +--------------+-----------------+ | sub_category | main_category  | +-------------

以下数据库结果/表是通过使用下面的SQL查询将两个表连接在一起创建的。我还想做的是显示第三列,它计算某个值在主类别列中包含的次数。在底部的表格中可以看到期望结果的示例,其中第三列显示了“主要类别1”出现的次数-在本例中为8次,“主要类别2”出现6次。有人知道我需要对现有查询做什么才能做到这一点吗?它是否涉及
分组依据
计数

+--------------+-----------------+ | sub_category | main_category  | +--------------+-----------------+ | SubCategoryA | main category 1 | | SubCategoryB | main category 1 | | SubCategoryC | main category 1 | | SubCategoryD | main category 1 | | SubCategoryE | main category 1 | | SubCategoryF | main category 1 | | SubCategoryG | main category 1 | | SubCategoryH | main category 1 | | SubCategoryI | main category 2 | | SubCategoryJ | main category 2 | | SubCategoryK | main category 2 | | SubCategoryL | main category 2 | | SubCategoryM | main category 2 | | SubCategoryN | main category 2 | +--------------+-----------------+ +--------------+-----------------+-------+ |子类|主类|计数| +--------------+-----------------+-------+ |子类别|主要类别1 | 8 | |子类别B |主要类别1 | 8 | |子类别C |主要类别1 | 8 | |子类别D |主要类别1 | 8 | |子类别|主要类别1 | 8 | |子类别F |主要类别1 | 8 | |子类别|主类别1 | 8 | |子类别H |主要类别1 | 8 | |子类别I |主要类别2 | 6 | |子类别J |主要类别2 | 6 | |子类别K |主要类别2 | 6 | |子类别1 |主要类别2 | 6 | |子类别M |主要类别2 | 6 | |子类别n |主要类别2 | 6 | +--------------+-----------------+-------+
我以您的问题中提供的数据为例,在这里使用子查询只是为了向您展示如何执行该操作的逻辑

SELECT *,(SELECT COUNT( mcat) FROM `categoriesstack`

 WHERE mcat=cs.mcat) AS `count` FROM `categoriesstack` cs 

这是您可以在查询中实现的方法,但不确定这是否有效

  SELECT headings.heading AS sub_category,    
         primary_category AS main_category,
  (SELECT COUNT(primary_category) FROM `TABLE1` WHERE primary_category=TABLE1 .primary_category) AS `count`   
  FROM   TABLE1 INNER JOIN headings ON TABLE1.Heading=TABLE2.heading   

UNION

  SELECT TABLE2.heading     AS heading,
         secondary_category AS main_category,
  (SELECT COUNT(secondary_category) FROM `TABLE1` WHERE secondary_category=TABLE1 .secondary_category) AS `count`   
  FROM   TABLE1 INNER JOIN TABLE2 ON TABLE1.Heading=TABLE2.heading   

ORDER BY main_category ASC

希望它工作正常

谢谢。这似乎是我所需要的,但我正在努力使您的代码与我的SQL完全兼容。请您看看哪一个更好地说明了我正在尝试做什么,并看看您的子查询如何处理它?前两张桌子就是我要加入的两张桌子。第三个表是我试图创建的查询的结果。我需要将计数添加到第三个表中。谢谢@dianuj-我们越来越近了:)最后我删除了分组-这是我的错,因为我不应该将它们分组到我的演示表中。你可以在这个提琴上看到:我把这个组拿走了,而且我没有把所有的子类别都去掉,而是把它们改成了不同的,因为这就是我的应用程序中发生的事情。我最新的提琴中的第一个表是“标题”表。我一直在想为什么现在的计数不准确?第一张表显示,“主要类别1”总共出现了13次,但在计数列中显示了12次主类别2'出现7次,但有2个不同的值,3和4“主类别3”的计数似乎正确为3。但是“主类别4”应该是1,而这不会出现。奇怪,dianuj有什么想法吗?我已经解决了这里的一些问题,我在AREA_表中丢失了一些值。因此,现在的问题基本上是,主要类别和次要类别的计数没有合并成一个值。是否可以将它们组合在一起,使每个“主类别1”行的读数为13,而不是12&1?请看这里的新小提琴:
SELECT *,(SELECT COUNT( mcat) FROM `categoriesstack`

 WHERE mcat=cs.mcat) AS `count` FROM `categoriesstack` cs 
  SELECT headings.heading AS sub_category,    
         primary_category AS main_category,
  (SELECT COUNT(primary_category) FROM `TABLE1` WHERE primary_category=TABLE1 .primary_category) AS `count`   
  FROM   TABLE1 INNER JOIN headings ON TABLE1.Heading=TABLE2.heading   

UNION

  SELECT TABLE2.heading     AS heading,
         secondary_category AS main_category,
  (SELECT COUNT(secondary_category) FROM `TABLE1` WHERE secondary_category=TABLE1 .secondary_category) AS `count`   
  FROM   TABLE1 INNER JOIN TABLE2 ON TABLE1.Heading=TABLE2.heading   

ORDER BY main_category ASC