如何使子查询不被父查询中的 Group By 影响

在我的 SQL 语句中,有这样一段
SELECT (SELECT COUNT(*) FROM C1 Where C1.Topic = C2.Topic) AS [Count] FROM C2 GROUP BY C2.Class
由于 C2.Topic 不在 GROUP BY 中,所以这个语句不能正确执行,请问如何使上面那个子查询不受 GROUP BY 的影响,但是又能引用父查询中 C2 表的列值
添加了 C2.Class,可是还是不行。可能是还没有说明白,C1 和 C2 是同一个表的两个别名,父查询中是归类查询的,可是在子查询中希望查到的是表中等于父查询中的 C2.Topic 的记录有多少个,不被 GROUP BY 影响,这个应该怎么实现呢?
继续补充:
这个子查询是使用在一个表达式中的。我的要求是:有一个表格,这里面有稿件的汇总,每个纪录是一份稿件,里面的字段有单位的名称和这个稿件所得分数,如果是两个单位合作的稿件,那么稿件标题相同,但是单位不同。于是统计的时候需要将这篇稿件的得分除以合作单位数,而这个合作单位数我想在子查询中统计出来,于是想在子查询中查寻表中与这个标题相同的记录有多少个

第1个回答  2006-10-12
子查询分为相关子查询和无关子查询!
你这是相关子查询,你的父查询使用了group by就必须
包含聚合函数或相关列,否则就没有必要使用group by了
我看你没有必要使用子查询,应该是多表连接的分组统计
建议写成:
SELECT COUNT(*) as [count] FROM C1,C2 Where C1.Topic = C2.Topic GROUP BY C2.Class
第2个回答  2006-10-12
好想是因为你的select没有C2.Class 改成这样就好了

SELECT C2.Class,(SELECT COUNT(*) FROM C1 Where C1.Topic = C2.Topic) AS [Count] FROM C2 GROUP BY C2.Class
相似回答