如何为表中的每个记录创建SELECT查询?

时间:2019-12-16 13:30:36

标签: sql ms-access count cjk

我有一个表格SingleCrossReference,其中包含日语单词列表。我想查询该表,并为每条记录计算该单词字符串在单独的表Keyword中出现的次数。因此,基本上我要创建的查询表如下所示:

| SingleCrossReference.Word | Count(Keyword.Keyword) |
| Word 1                    |   1                    |
| Word 2                    |   2                    |
| Word 3                    |   1                    |

另外,用于计数单词的机制必须区分大小写,否则Access将考虑两个日语书写系统as the same and count them together

我有一个查询,可以评估Keyword表中的一条记录:

SELECT COUNT(Keyword.Keyword)
FROM Keyword
WHERE StrComp(Keyword.Keyword, "[Japanese word]", 0)=0 

但是我不知道如何链接两个表,以使它无法统计SenseCrossReference表中一个单词出现在Keyword表中的次数。

1 个答案:

答案 0 :(得分:2)

子查询本质上是这样做的:

SELECT Word, 
(
      SELECT COUNT(Keyword)
      FROM Keyword
      WHERE StrComp(Keyword.Keyword, Word, 0)=0 
) As CountKeyword
FROM SingleCrossReference

但是,性能通常不是最佳的,并且您通常最好将其重写为联接,例如:

SELECT Word, Count(Keyword)
FROM SingleCrossReference, Keyword
WHERE StrComp(Keyword.Keyword, Word, 0) = 0 
GROUP BY Word

这假定在Word上进行分组时没有语言环境问题,否则您需要为每个单词添加唯一的标识符。