首页 > 解决方案 > 如何为表中的每条记录创建一个 SELECT 查询?

问题描述

我有一张表,SingleCrossReference其中包含日语单词列表。我想查询这个表,并且对于每条记录,计算该单词字符串在单独的表中出现的次数,Keyword. 所以基本上我想要创建的查询表看起来像:

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

此外,用于计算单词的机制需要区分大小写,否则 Access 会将两个日语书写系统视为相同并将它们一起计数

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

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

但我不知道如何链接这两个表,以便计算表中单词SenseCrossReference出现在Keyword表中的次数。

标签: sqlms-accesscountcjk

解决方案


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

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 上分组时没有区域设置问题,否则您需要为每个单词添加唯一标识符。


推荐阅读