我的表看起来像这样,有两列:
我有多条记录,其中一些记录具有相同的ID,我想删除所有重复项,并且每行只保留一个ID。
所以我有这样的数据:
id: 1
name: Test1
id: 1
name: Test1
id: 2
name: Test1
id: 2
name: Test1
id: 2
name: Test1
id: 3
name: Test1
并希望它是这样的:
id: 1
name: Test1
id: 2
name: Test1
id: 3
name: Test1
任何想法如何实现这一目标?我已尝试this回答,但它返回了ID为1的所有行...
答案 0 :(得分:2)
我可以通过创建另一个表并将该表复制到您想要的行中来查看它。这是一个经过测试的解决方案。
CREATE TABLE mytable (id,name);
INSERT INTO mytable
(`id`, `name`)
VALUES
('1','Test1'),
('1','Test1'),
('2','Test1'),
('2','Test1'),
('2','Test1'),
('3','Test1')
CREATE TABLE mytable2 (id,name);
INSERT INTO mytable2
select m2.id, m2.name
from mytable m2
group by m2.id || m2.name
having count(m2.id || m2.name) >= 1
所需的结果集:
>>> conn.execute('select * from mytable2;').fetchall()
[(u'1', u'Test1'), (u'2', u'Test1'), (u'3', u'Test1')]
答案 1 :(得分:1)
假设您要从数据库中删除重复项,而不仅仅是从输出中删除。
delete from mytable where ROWID not in (select ROWID from mytable group by id);
select * from mytable;
输出:
1|Test1
2|Test1
3|Test1
()
内的部分)使用SQLite 3.18.0 2017-03-28 18:48:43
感谢@bernie制作mcve!
在mcve上工作比在价值列表上工作更有效率和更有趣。