2

我正在创建一个 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

谢谢!

4

1 回答 1

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
);

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

于 2011-03-21T19:51:41.830 回答