2011-03-21 23 views
1

我创建了一个SQLite视图来跟踪客户的电子邮件及其账户。有些客户使用相同的电子邮件地址创建多个帐户。使用SQLite,有没有办法限制视图只返回一次电子邮件,无论个人拥有多少个账户?我不关心哪个帐户被丢弃(即Jim1或Jim2)。SQLite:当整行不是唯一的时候删除重复的行

AccountName Email 
Jim1   [email protected] 
Jim2   [email protected] 
Shania   [email protected] 

视图将返回:

AccountName Email 
Jim1   [email protected] 
Shania   [email protected] 

谢谢!

回答

3

集团的结果通过Email,然后在第一个或最后一个相应的记录:

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

UPDATE: 注意,你可以添加一个唯一约束,以email列,使SQLite的错误了,如果您尝试插入相同值的第二次:

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

email列中的UNIQUE条款表明,没有T wo行可以包含相同的值。
COLLATE NOCASE子句会导致SQLite以不区分大小写的方式比较该行中的值(因此'EMAIL'和'eMail'会计算为相等)。