SQLite:如何对表中每个ROWID的引用进行计数,然后插入计数
我需要一些帮助来编写SQL语句。我在SQLite数据库中有两个表:SQLite:如何对表中每个ROWID的引用进行计数,然后插入计数,sql,sqlite,Sql,Sqlite,我需要一些帮助来编写SQL语句。我在SQLite数据库中有两个表: CREATE TABLE users ( user_id INTEGER PRIMARY KEY, item_id INTEGER ); CREATE TABLE items ( item_id INTEGER PRIMARY KEY, ref_count INTEGER ); 我正在寻找类似以下伪代码的SQLite语句: for each row in items items[ row ].ref_
CREATE TABLE users (
user_id INTEGER PRIMARY KEY,
item_id INTEGER
);
CREATE TABLE items (
item_id INTEGER PRIMARY KEY,
ref_count INTEGER
);
我正在寻找类似以下伪代码的SQLite语句:
for each row in items
items[ row ].ref_count = SELECT COUNT(users.item_id)
FROM users
WHERE users.item_id=row;
看起来您可以按如下方式使用该命令:
REPLACE INTO items (item_id, ref_count)
SELECT item_id, COUNT(*) AS ref_count
FROM users
GROUP BY item_id;
测试用例:
INSERT INTO users VALUES (1, 1);
INSERT INTO users VALUES (2, 1);
INSERT INTO users VALUES (3, 1);
INSERT INTO users VALUES (4, 2);
INSERT INTO users VALUES (5, 2);
INSERT INTO users VALUES (6, 3);
运行REPLACE
查询后的结果:
SELECT * FROM items;
item_id ref_co
------------ ------
1 3
2 2
3 1
SELECT * FROM items;
item_id ref_co
------------ ------
1 4
2 2
3 1
4 2
增加一些进一步的项目:
INSERT INTO users VALUES (7, 1);
INSERT INTO users VALUES (8, 4);
INSERT INTO users VALUES (9, 4);
重新运行REPLACE
查询后:
SELECT * FROM items;
item_id ref_co
------------ ------
1 3
2 2
3 1
SELECT * FROM items;
item_id ref_co
------------ ------
1 4
2 2
3 1
4 2
看起来您可以按如下方式使用该命令:
REPLACE INTO items (item_id, ref_count)
SELECT item_id, COUNT(*) AS ref_count
FROM users
GROUP BY item_id;
测试用例:
INSERT INTO users VALUES (1, 1);
INSERT INTO users VALUES (2, 1);
INSERT INTO users VALUES (3, 1);
INSERT INTO users VALUES (4, 2);
INSERT INTO users VALUES (5, 2);
INSERT INTO users VALUES (6, 3);
运行REPLACE
查询后的结果:
SELECT * FROM items;
item_id ref_co
------------ ------
1 3
2 2
3 1
SELECT * FROM items;
item_id ref_co
------------ ------
1 4
2 2
3 1
4 2
增加一些进一步的项目:
INSERT INTO users VALUES (7, 1);
INSERT INTO users VALUES (8, 4);
INSERT INTO users VALUES (9, 4);
重新运行REPLACE
查询后:
SELECT * FROM items;
item_id ref_co
------------ ------
1 3
2 2
3 1
SELECT * FROM items;
item_id ref_co
------------ ------
1 4
2 2
3 1
4 2