如何创建一个 table 来计算相同文本在 SQLite 中的字段中出现的次数?

How do I create a table that counts the number of times the same text occurs in a field in SQLite?

我有一个 table 有一个文本列。我可以生成一个 table 来分隔不同行的数量,如下所示:

DROP TABLE IF EXISTS msgs;
CREATE TABLE msgs (
    Msg TEXT
);
INSERT INTO msgs(Msg) SELECT DISTINCT Message FROM Log;

但我想在 msgs 中添加一列,说明 MsgLog table 中实际出现了多少次。我尝试阅读 SQLite COUNT 页面,但我不清楚如何将其放入 INSERT INTO 语句中。我是 SQL 中更高级(中级?)的新手,所以我发现很难理解它。关于我如何做到这一点的任何想法?任何可以帮助我解决这个问题的参考资料 material 也将不胜感激。

您应该使用 GROUP BY and an aggregated function, in this case, COUNT()

而不是 DISTINCT
DROP TABLE IF EXISTS msgs;
CREATE TABLE msgs (
    Msg TEXT
    Msg_count int
);
    INSERT INTO msgs(Msg, msg_count)
    SELECT Message, count(Message) as msg_count FROM Log
    
    group by Message;

您可以使用 GROUP BY 聚合数据集。例如:

CREATE TABLE msgs (
    Msg TEXT,
    cnt int    
);

INSERT INTO msgs(Msg, cnt) 
SELECT Message, count(*) 
FROM Log 
GROUP BY Msg;