【问题标题】:How to create a SELECT query for each record in a table?如何为表中的每条记录创建一个 SELECT 查询?
【发布时间】:2020-04-08 23:26:12
【问题描述】:

我有一张表,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 表中的次数。

【问题讨论】:

    标签: sql ms-access count cjk


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 2017-02-01
      • 2016-11-19
      • 2020-01-07
      • 1970-01-01
      • 2015-06-08
      相关资源
      最近更新 更多