SQLite:当整行不唯一时删除重复的行

时间:2011-03-21 18:24:34

标签: sqlite view no-duplicates

我正在创建一个SQLite视图来跟踪客户的电子邮件及其帐户。有些客户使用相同的电子邮件地址创建了多个帐户。使用SQLite,有没有办法限制视图只返回一次电子邮件,无论个人有多少帐户?我不担心哪个帐户被丢弃(即Jim1或Jim2)。

AccountName    Email
Jim1           Jim@example.com
Jim2           Jim@example.com
Shania         Sh@example.com

视图将返回:

AccountName    Email
Jim1           Jim@example.com
Shania         Sh@example.com

谢谢!

1 个答案:

答案 0 :(得分:3)

Email对结果进行分组,然后取第一个或最后一个相应的记录:

  SELECT Email
  ,      MIN(AccountName) AS Account
    FROM table
GROUP BY Email;

<强>更新: 请注意,您可以向电子邮件列添加唯一约束,以便在尝试再次插入相同值时SQLite出错:

CREATE TABLE Users
( id          INTEGER PRIMARY KEY
, email       TEXT    NOT NULL UNIQUE COLLATE NOCASE
, accountname TEXT    NOT NULL        COLLATE NOCASE
);

email列上的UNIQUE子句表示没有两行可以包含相同的值。
COLLATE NOCASE子句使SQLite以不区分大小写的方式比较该行中的值(因此'EMAIL'和'eMail'将相等)。