使用mysql中的组计算整体结果

时间:2014-08-23 20:24:48

标签: mysql sql count group-by

我看到一些问题可以解决与此类似的问题,但我找不到任何可以解决的问题。

我正在使用此查询:

SELECT COUNT(a.word) FROM concordance a, bigdic b 
                    WHERE a.word = b.word
                    and a.word LIKE '%" . $name .  "%'"

它工作正常,但我希望消除表wordb重复的情况。如果我添加GROUP BY b.word,查询将返回第一个组的计数而不是整个计数减去重复项,而右侧总计将是组的计数。我该如何获得总数呢?

2 个答案:

答案 0 :(得分:0)

在子查询中选择b中的不同字词,然后将结果重新加入a,这样只有来自b的唯一字才能加入a

SELECT 
  COUNT(a.word) 
FROM concordance a
JOIN (SELECT DISTINCT b.word
      FROM bigdic b) temp
ON temp.word = a.word
WHERE a.word LIKE '%" . $name .  "%'"

答案 1 :(得分:0)

将此短语称为exists查询可能更有效:

SELECT COUNT(a.word)
FROM concordance a
WHERE a.word LIKE '%" . $name .  "%'"
WHERE exists (select 1 from bigdic b.word = b.word);

特别是如果您有bigdic(word)的索引。