1

是否有通用的 SELECT 语句来检测重复行(“相同”,所有列都相等)?EG,下表第 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,存储在临时表中,删除原始表并重命名临时表?

4

1 回答 1

3

你一直有正确的想法。您必须在每个表上运行以下命令:

select distinct titel, interpret, jahr from table1

您可以将不同的行转储到另一个表中,如下所示:

create table table2 as
select distinct titel, interpret, jahr from table1

然后,您可以像这样删除初始表:

drop table table1

Rename the newly created table to table1 like so:

alter table table2 rename to table1

To find row number of each record in the table:

select a.rowid, a.* from table1 a

To find row number of only the records that are duplicate:

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
于 2013-09-08T05:01:08.807 回答