我看到一些问题可以解决与此类似的问题,但我找不到任何可以解决的问题。
我正在使用此查询:
SELECT COUNT(a.word) FROM concordance a, bigdic b
WHERE a.word = b.word
and a.word LIKE '%" . $name . "%'"
它工作正常,但我希望消除表word
中b
重复的情况。如果我添加GROUP BY b.word
,查询将返回第一个组的计数而不是整个计数减去重复项,而右侧总计将是组的计数。我该如何获得总数呢?
答案 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)
的索引。