是否有通用的SELECT语句来检测重复的行(“相同”,所有列都相同)? E.G,第2栏和第2栏下表中的4
titel | interpret | jahr
-----------------------------------+------------------+-----
Beauty | Ryuichi Sakamoto | 1990
Goodbye Country (Hello Nightclub) | Groove Armada | 2001
Glee | Bran Van 3000 | 1997
Goodbye Country (Hello Nightclub)| Groove Armada | 2001
或者我需要一张特定于表的SELECT吗?
有人给了我一个带有多个表的Sqlite d / b,每个表看起来好像有多个相同的行(每个表中有不同的列),所以我更喜欢通用的解决方案。
之后,我必须弄清楚如何删除重复项。也许我可以在SELECT上使用DISTINCT,存储在临时表中,删除原始文件并重命名临时表?
答案 0 :(得分:3)
你一直都有正确的想法。您必须在每个表上运行以下内容:
select distinct titel, interpret, jahr from table1
您可以将不同的行转储到另一个表中,如下所示:
create table table2 as
select distinct titel, interpret, jahr from table1
然后您可以删除初始表:
drop table table1
将新创建的表重命名为table1,如下所示:
alter table table2 rename to table1
要查找表中每条记录的行号:
select a.rowid, a.* from table1 a
仅查找重复记录的行号:
select a.rowid, a.*
from table1 a
inner join
(
select titel, interpret, jahr
from table1
group by titel, interpret, jahr
having count(*) > 1
) b on
a.titel = b.titel
and a.interpret = b.interpret
and a.jahr = b.jahr