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;

UPDATE : email 列に一意の制約を追加できることに注意してください。これにより、同じ値を 2 回目に挿入しようとすると SQLite エラーが発生します。

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

列のUNIQUE句は、email2 つの行に同じ値を含めることはできないことを示しています。COLLATE NOCASE
句により、SQLite は その行の値を大文字と小文字を区別しない方法で比較します (したがって、'EMAIL' と 'eMail' は等しいと見なされます)。

于 2011-03-21T19:51:41.830 に答える