如何创建一个 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
中添加一列,说明 Msg
在 Log
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;
我有一个 table 有一个文本列。我可以生成一个 table 来分隔不同行的数量,如下所示:
DROP TABLE IF EXISTS msgs;
CREATE TABLE msgs (
Msg TEXT
);
INSERT INTO msgs(Msg) SELECT DISTINCT Message FROM Log;
但我想在 msgs
中添加一列,说明 Msg
在 Log
table 中实际出现了多少次。我尝试阅读 SQLite COUNT 页面,但我不清楚如何将其放入 INSERT INTO
语句中。我是 SQL 中更高级(中级?)的新手,所以我发现很难理解它。关于我如何做到这一点的任何想法?任何可以帮助我解决这个问题的参考资料 material 也将不胜感激。
您应该使用 GROUP BY
and an aggregated function, in this case, COUNT()
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;