我在SQLite中有一个表,它有两列(名称和年龄)。像这样:
Ann 29
约翰30
马克14
安18
布莱恩45
布莱恩21
Brian 19
我想在此表中添加第三列,并显示此名称重复的次数(我不关心年龄)。像这样:
Ann 29 2
约翰30 1
马克14 1
安18 2
Brian 45 3
Brian 21 3
布莱恩19 3
我怎样才能在SQL(SQLite)中做到这一点?
答案 0 :(得分:2)
使用select sql示例计算重复的名称,如下所示:
SELECT name, age, (SELECT count(*) FROM tableName t2 WHERE t2.name = t1.name) as repeated
FROM tableName t1
或添加新列并使用update sql计算重复名称:
UPDATE tableName t1
SET repeated = (SELECT count(*) FROM tableName t2 WHERE t2.name = t1.name)
答案 1 :(得分:1)
注意:如果您正在寻找熟食代码,请不要阅读。
这是一个三步过程,因为你已经有一个填充了数据的表,否则只需按照第三步。
答案 2 :(得分:1)
您可以使用名称及其计数来查询从现有表格和即时表格中加入的表格:
select *
from names
left join
(select name, count(name)
from names
group by name)
using(name);
输出(我在其中一个Anns的年龄值中有一个拼写错误):
Ann|29|2
John|30|1
Mark|14|1
Ann|29|2
Brian|45|3
Brian|21|3
Brian|19|3
MCVE:
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE names (name varchar(10), age int);
INSERT INTO names VALUES('Ann',29);
INSERT INTO names VALUES('John',30);
INSERT INTO names VALUES('Mark',14);
INSERT INTO names VALUES('Ann',29);
INSERT INTO names VALUES('Brian',45);
INSERT INTO names VALUES('Brian',21);
INSERT INTO names VALUES('Brian',19);
COMMIT;